تمرين الجزء 1 - إنشاء منشئ بت عشوائي كمومي

مكتمل

في الوحدة السابقة، تعرفت على الكتل الإنشائية الأساسية لبرنامج Q#. الآن ، أنت جاهز لكتابة أول برنامج كمي لك. في هذه الوحدة ، تكتب برنامجا كموميا يولد بت عشوائي حقا.

يمكنك بناء مولد الأرقام العشوائية الكمومية في خطوتين. هذه الوحدة هي الخطوة الأولى ، وهي إنشاء بت عشوائي واحد. لإنشاء بت عشوائي ، تقوم بتخصيص كيوبت في حالة $ \ ket{0} $ ، ووضع هذا الكيوبت في حالة التراكب ، ثم قياس الكيوبت لإنتاج قيمة بت عشوائية إما 0 أو 1.

قم بإنشاء ملف برنامج Q#

  1. افتح Visual Studio Code.
  2. افتح القائمة ملف ، ثم اختر ملف نصي جديد لإنشاء ملف جديد.
  3. احفظ الملف باسم Main.qs.

اكتب رمز Q # الخاص بك لمولد البت العشوائي في الملف Main.qs .

Main تعريف العملية

Main العملية هي نقطة إدخال برنامجك. انسخ التعليمات البرمجية التالية في ملفك Main.qs :

operation Main(): Result{

    // Your code goes here

}

تخصيص qubit

للبدء ، قم بتخصيص كيوبت واحد مع العبارة use . في Q # ، يبدأ كل كيوبت تقوم بتخصيصه use ب في حالة $ \ ket{0} $ افتراضيا. لتخصيص كيوبت واحد ، انسخ الكود التالي إلى برنامجك:

operation Main(): Result{

    // Allocate a qubit
    use q = Qubit();
}

ضع الكيوبت في حالة تراكب

في هذه المرحلة ، لا يمكنك إنشاء بت عشوائي من الكيوبت لأن الكيوبت في حالة $ \ ket{0} $ . إذا قمت بقياس حالة هذا الكيوبت، فسيعيد القياس قيمة بت قدرها 0 في كل مرة.

لإنشاء بت عشوائي من قياس الكيوبت ، تحتاج أولا إلى وضع الكيوبت في تراكب حالة $ \ ket{0} $ وحالة $ \ ket{1} $. لوضع الكيوبت في حالة تراكب ، قم بتطبيق عملية Hadamard على الكيوبت. تقوم عملية Hadamard بتحويل الكيوبت من حالة $ \ ket{0} $ إلى تراكب متساو للحالات $ \ ket{0} $ و $ \ ket{1} $.

$$ H \ket{0} = \frac{1} {\sqrt{2}} (\ket{0} + \ket{1}) $$

لتطبيق عملية Hadamard على الكيوبت الخاص بك في Q #، استخدم العملية H :

operation Main(): Result{

    use q = Qubit();
    H(q);
}

إشعار

عند تطبيق عملية كمومية على كيوبت في Q#، لا ترجع العملية قيمة. بدلا من ذلك ، تؤثر العمليات على حالة الكيوبت.

قياس البت الكمومي

نظرا لأن الكيوبت الآن في حالة تراكب متساوية ، فعند قياس الكيوبت ، يكون لديك فرصة 50% أن يرجع القياس فرصة 0 و 50% أن يرجع القياس 1.

لقياس قيمة الكيوبت في Q # ، استخدم العملية M وقم بتخزين قيمة القياس في المتغير result :

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
}

إعادة تعيين البت الكمومي

في Q # ، يجب أن يكون الكيوبت في حالة $ \ ket{0} $ قبل أن تتمكن من تحرير الكيوبت. استخدم العملية Reset لإعادة تعيين الكيوبت إلى حالة $\ket{0}$.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
}

إرجاع نتيجة القياس

أخيرا ، قم بإرجاع نتيجة القياس مع العبارة return . هذه النتيجة هي بت عشوائي ، إما 0 أو 1 باحتمال متساو. انسخ التعليمات البرمجية التالية في ملفك Main.qs :

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
    return result;
}

قم بتشغيل برنامج مولد البت العشوائي الخاص بك

لقد قمت بإنشاء برنامج Q# يسمى Main.qs يخصص كيوبت، ويضع الكيوبت، ويضع الكيوبت، ويعيد ضبط الكيوبت، ثم يرجع نتيجة القياس. فيما يلي ملخص لرمز Q # الخاص بك:

operation Main() : Result {
    // Allocate a qubit.
    use q = Qubit();

    // Set the qubit into superposition of 0 and 1 using the Hadamard 
    H(q);

    // Measure the qubit and store the result.
    let result = M(q);

    // Reset qubit to the |0〉 state.
    Reset(q);

    // Return the result of the measurement.
    return result;
}

إشعار

يمثل الرمز // تعليقات اختيارية تشرح كل خطوة من خطوات البرنامج. يتم تجاهل التعليقات من قبل المترجم.

لتشغيل برنامجك على جهاز المحاكاة المدمج ، اختر عدسة تشغيل التعليمات البرمجية أعلى العملية Main ، أو اضغط على Ctrl + F5. يظهر الإخراج الخاص بك على وحدة تحكم تصحيح الأخطاء في المحطة الطرفية.

والنتيجة إما Zero أو One، لكل منها فرصة 50%. قيمة قياس هذه البت على جهاز كمبيوتر كمي عشوائية حقا. قم بتشغيل البرنامج عدة مرات لترى بنفسك كيف تتغير النتيجة.

في الوحدة التالية ، يمكنك دمج بتات عشوائية متعددة لتنفيذ الجزء الثاني من مولد الأرقام العشوائية الكمومية.