تمرين الجزء 1 - إنشاء منشئ بت عشوائي كمومي
في الوحدة السابقة، تعرفت على الكتل الإنشائية الأساسية لبرنامج Q#. الآن ، أنت جاهز لكتابة أول برنامج كمي لك. في هذه الوحدة ، تكتب برنامجا كموميا يولد بت عشوائي حقا.
يمكنك بناء مولد الأرقام العشوائية الكمومية في خطوتين. هذه الوحدة هي الخطوة الأولى ، وهي إنشاء بت عشوائي واحد. لإنشاء بت عشوائي ، تقوم بتخصيص كيوبت في حالة $ \ ket{0} $ ، ووضع هذا الكيوبت في حالة التراكب ، ثم قياس الكيوبت لإنتاج قيمة بت عشوائية إما 0 أو 1.
قم بإنشاء ملف برنامج Q#
- افتح Visual Studio Code.
- افتح القائمة ملف ، ثم اختر ملف نصي جديد لإنشاء ملف جديد.
- احفظ الملف باسم
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%. قيمة قياس هذه البت على جهاز كمبيوتر كمي عشوائية حقا. قم بتشغيل البرنامج عدة مرات لترى بنفسك كيف تتغير النتيجة.
في الوحدة التالية ، يمكنك دمج بتات عشوائية متعددة لتنفيذ الجزء الثاني من مولد الأرقام العشوائية الكمومية.