연습 - 양자 임의 비트 생성기 만들기
양자 난수 생성기는 두 단계로 빌드합니다. 이 단원에서는 단일 임의 비트를 생성하는 첫 번째 단계를 빌드합니다.
임의 비트 생성기 정의
먼저 큐비트를 할당합니다. 할당된 큐비트는 $\ket{0}$ 상태이며 난수를 생성하는 데 그다지 유용하지 않습니다. 큐비트는 중첩에 넣어야 합니다. 이렇게 하려면 큐비트에 Hadamard 게이트인 H
를 적용하면 됩니다. Hadamard 게이트는 큐비트를 $\ket{0}$ 및 $\ket{1}$의 동등한 중첩에 넣습니다.
큐비트를 측정하면 임의 비트(0 또는 1)가 50% 확률로 표시됩니다. 이 비트의 값은 진 난수이며 측정 후에 무엇을 얻을 지 알 수 있는 방법이 없습니다.
Q# 프로그램 만들기
Visual Studio Code를 열고 파일>새 텍스트 파일을 선택하여 새 파일을 만듭니다.
파일을
RandomNumberGenerator.qs
로 저장합니다. 이 파일에는 프로그램에 대한 Q# 코드가 포함됩니다.다음 코드를
RandomNumberGenerator.qs
파일에 복사합니다.namespace QuantumRandomNumberGenerator { @EntryPoint() operation GenerateRandomBit() : Result { // Allocate a qubit. use q = Qubit(); // Set the qubit into superposition of 0 and 1 using the Hadamard H(q); // At this point the qubit `q` has 50% chance of being measured in the // |0〉 state and 50% chance of being measured in the |1〉 state. // Measure the qubit value using the `M` operation, and store the // measurement value in the `result` variable. let result = M(q); // Reset qubit to the |0〉 state. // Qubits must be in the |0〉 state by the time they are released. Reset(q); // Return the result of the measurement. return result; } }
잠시 새 코드를 검토해 보겠습니다.
- 먼저
Qubit()
작업과use
키워드를 사용하여 하나의 큐비트를 할당합니다. - 그런 다음 Hadamard 작업은 큐비트를 중첩
H(q)
에 넣습니다. - 그리고 큐비트를 측정하여 임의 비트
M(q)
를 가져옵니다. - 마지막으로,
Reset(q)
는 큐비트를 제로 상태로 다시 설정합니다. 큐비트는 릴리스될 때까지 $\ket{0}$ 상태여야 합니다.
프로그램을 로컬에서 실행
기본 제공 시뮬레이터에서 로컬로 프로그램을 실행하려면 @EntryPoint()
아래 명령 목록에서 실행을 클릭하거나 Ctrl+F5를 누릅니다. 출력이 터미널의 디버그 콘솔에 표시됩니다.
결과는 정말 무작위입니다. 다른 결과를 보려면 프로그램을 다시 실행하면 됩니다.
다음 단원에서는 양자 난수 생성기의 두 번째 단계, 즉 여러 난수 비트를 결합하여 더 큰 숫자를 형성하는 단계를 구현합니다.