Exercício Parte 1 - Crie um gerador de bits aleatórios quânticos
Na unidade anterior, você aprendeu sobre os blocos de construção básicos de um programa Q#. Agora, você está pronto para escrever seu primeiro programa quântico. Nesta unidade, você escreve um programa quântico que gera um bit verdadeiramente aleatório.
Você cria o gerador de número aleatório quântico em duas etapas. Essa unidade é a primeira etapa, que é gerar um único bit aleatório. Para gerar um bit aleatório, você aloca um qubit no estado $\ket{0}$, coloca esse qubit em um estado de superposição e, em seguida, mede o qubit para produzir um valor de bit aleatório de 0 ou 1.
Criar o arquivo de programa Q#
- Abra o Visual Studio Code.
- Abra o menu Arquivo e escolha Novo Arquivo de Texto para criar um novo arquivo.
- Salve o arquivo como
Main.qs.
Escreva seu código Q# para o gerador de bits aleatório no Main.qs arquivo.
Definir a operação Main
A operação Main é o ponto de entrada do programa. Copie o seguinte código em seu Main.qs arquivo:
operation Main(): Result{
// Your code goes here
}
Alocar um qubit
Para começar, aloque um qubit com a instrução use . Em Q#, cada qubit que você alocar com use começa no estado $\ket{0}$ por padrão. Para alocar um único qubit, copie o seguinte código em seu programa:
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Colocar o qubit em um estado de superposição
Neste ponto, você não pode gerar um bit aleatório do qubit porque o qubit está no estado $\ket{0}$. Se você medir o estado desse qubit, a medida retornará um valor de bit de 0 cada vez.
Para gerar um bit aleatório com base na medida do qubit, primeiro você precisa colocar o qubit em uma superposição do estado $\ket{0}$ e do estado $\ket{1}$. Para colocar o qubit em um estado de superposição, aplique uma operação Hadamard ao qubit. A operação Hadamard transforma o qubit do estado $\ket{0}$ para uma superposição igual dos estados $\ket{0}$ e $\ket{1}$.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
Para aplicar uma operação Hadamard ao qubit em Q#, use a operação H.
operation Main(): Result{
use q = Qubit();
H(q);
}
Observação
Quando você aplica uma operação quântica a um qubit em Q#, a operação não retorna um valor. Em vez disso, as operações afetam o estado do qubit.
Medir o qubit
Como o qubit está agora em um estado de superposição igual, quando você mede o qubit, você tem 50% chance de que a medida retorne 0 e 50% chance de que a medida retorne um 1.
Para medir o valor do qubit em Q#, use a M operação e armazene o valor da medida na result variável:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Redefinir o qubit
Em Q#, um qubit deve estar no estado $\ket{0}$ antes que você possa liberar o qubit. Utilize a operação Reset para resetar o qubit ao estado $\ket{0}$.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Retornar o resultado da medição
Por fim, retorne o resultado da medida com a instrução return . Esse resultado é um bit aleatório, 0 ou 1 com probabilidade igual. Copie o seguinte código em seu Main.qs arquivo:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Executar seu programa de gerador de bits aleatório
Você criou um programa Q# chamado Main.qs que aloca um qubit, coloca o qubit em um estado de superposição igual, mede o qubit, redefine o qubit e retorna o resultado da medida. Aqui está um resumo do seu código 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;
}
Observação
O // símbolo representa comentários opcionais que explicam cada etapa do programa. Os comentários são ignorados pelo compilador.
Para executar seu programa no simulador interno, escolha a lente Executar código acima da Main operação ou pressione Ctrl + F5. A saída é exibida no console de depuração do terminal.
O resultado é Zero ou, Onecada um com uma chance de 50%. O valor de medida desse bit em um computador quântico é realmente aleatório. Execute o programa várias vezes para ver por si mesmo como o resultado muda.
Na próxima unidade, você combina vários bits aleatórios para implementar a segunda parte do gerador de número aleatório quântico.