Exercício – Criar um gerador quântico de bits aleatórios

Concluído

Você constrói seu gerador de números aleatórios quânticos em duas fases. Nesta unidade, você constrói a primeira fase, que é gerar um único bit aleatório.

Definir um gerador de bits aleatório

Você começa alocando qubit. Quando você aloca um qubit, ele está no estado $\ket{0}$, o que não é muito útil para gerar números aleatórios. Você precisa colocar o qubit em superposição. Você pode fazer isso aplicando o portão de Hadamard, H, ao qubit. O portão de Hadamard coloca o qubit em uma superposição igual de $\ket{0}$ e $\ket{1}$.

Quando você mede o qubit, você obterá um bit aleatório, 0 ou 1, com igual probabilidade de 50%. O valor desse bit é realmente aleatório, não há como saber o que você obtém após a medição.

Criar o programa Q#

  1. Abra o Visual Studio Code e selecione File > New Text File para criar um novo arquivo.

  2. Guarde o ficheiro como RandomNumberGenerator.qs. Este ficheiro irá conter o código Q# para o seu programa.

  3. Copie o código a seguir para o RandomNumberGenerator.qs arquivo.

    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;
        }
    }
    

Vamos recapitular o novo código.

  • Primeiro, você aloca um qubit com a Qubit() operação e a use palavra-chave.
  • Então, a operação Hadamard coloca o qubit em superposição, H(q).
  • Em seguida, você mede o qubit para obter um bit aleatório, M(q).
  • Finalmente, Reset(q) redefine o qubit para o estado zero. Qubits devem estar no estado $\ket{0}$ no momento em que são lançados.

Execute o programa localmente

Para executar o programa localmente no simulador integrado, Executar a partir da lista de comandos abaixo @EntryPoint()ou pressione Ctrl+F5. Sua saída aparece no console de depuração no terminal.

O resultado é verdadeiramente aleatório. Você pode executar o programa novamente para ver um resultado diferente.

Na próxima unidade, você implementará a segunda fase do seu gerador quântico de números aleatórios: combinando vários bits aleatórios para formar um número maior.