연습 - 양자 임의 비트 생성기 만들기

완료됨

양자 난수 생성기는 두 단계로 빌드합니다. 이 단원에서는 단일 임의 비트를 생성하는 첫 번째 단계를 빌드합니다.

임의 비트 생성기 정의

먼저 큐비트를 할당합니다. 할당된 큐비트는 $\ket{0}$ 상태이며 난수를 생성하는 데 그다지 유용하지 않습니다. 큐비트는 중첩에 넣어야 합니다. 이렇게 하려면 큐비트에 Hadamard 게이트인 H를 적용하면 됩니다. Hadamard 게이트는 큐비트를 $\ket{0}$ 및 $\ket{1}$의 동등한 중첩에 넣습니다.

큐비트를 측정하면 임의 비트(0 또는 1)가 50% 확률로 표시됩니다. 이 비트의 값은 진 난수이며 측정 후에 무엇을 얻을 지 알 수 있는 방법이 없습니다.

Q# 프로그램 만들기

  1. Visual Studio Code를 열고 파일>새 텍스트 파일을 선택하여 새 파일을 만듭니다.

  2. 파일을 RandomNumberGenerator.qs로 저장합니다. 이 파일에는 프로그램에 대한 Q# 코드가 포함됩니다.

  3. 다음 코드를 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를 누릅니다. 출력이 터미널의 디버그 콘솔에 표시됩니다.

결과는 정말 무작위입니다. 다른 결과를 보려면 프로그램을 다시 실행하면 됩니다.

다음 단원에서는 양자 난수 생성기의 두 번째 단계, 즉 여러 난수 비트를 결합하여 더 큰 숫자를 형성하는 단계를 구현합니다.