Övning del 1 – Skapa en kvantgenerator för slumpmässiga bitar
I föregående lektion lärde du dig om de grundläggande byggstenarna i ett Q#-program. Nu är du redo att skriva ditt första kvantprogram: ett kvantprogram för att generera verkligt slumpmässiga tal.
Du skapar kvantgeneratorn för slumptal i två faser. I den här lektionen skapar du den första fasen, som är att generera en enda slumpmässig bit.
Skapa Q#-programmet
- Öppna Visual Studio Code och välj Fil > Ny textfil för att skapa en ny fil.
- Spara filen som
Main.qs
. Den här filen innehåller Q#-koden för ditt program.
Definiera åtgärden Main
Åtgärden Main
är startpunkten för ditt program.
operation Main(): Result{
// Your code goes here
}
Allokera en kvantbit
Du börjar med att allokera en qubit med nyckelordet use
. I Q# börjar varje qubit som du allokerar i tillståndet $\ket{0}$ som standard.
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Placera kvantbiten i superposition
Kvantbiten är i tillståndet $\ket{0}$ , vilket inte är särskilt användbart för att generera slumpmässiga tal. Du måste placera kvantbiten i superposition. För att göra detta använder du Hadamard-åtgärden, , H
på qubiten. Hadamard-åtgärden ändrar qubitens tillstånd och placerar den i en lika stor superposition av $\ket{0}$ och $\ket{1}$.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
Eftersom kvantbiten är i en lika stor superposition har du 50 % chans att få 0 och 50 % chans att få 1 när du mäter den.
operation Main(): Result{
use q = Qubit();
H(q);
}
Mäta kvantbiten
Nu har kvantbiten q
50 % chans att mätas i tillståndet |0〉 och 50 % chans att mätas i tillståndet |1〉. Om du mäter kvantbiten får du därför en slumpmässig bit, antingen 0 eller 1, med lika med 50 % sannolikhet. Värdet för den här biten är verkligen slumpmässigt, det finns inget sätt att veta i förväg resultatet av mätningen.
Om du vill mäta kvantbitsvärdet använder du M
åtgärden och lagrar måttvärdet i variabeln result
.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Återställa kvantbiten
I Q# måste varje qubit vara i tillståndet $\ket{0}$ när de släpps. Du använder Reset(q)
för att återställa kvantbiten till nolltillståndet.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Returnera mätresultatet
Slutligen returnerar du mätresultatet med nyckelordet return
. Det här resultatet är en slumpmässig bit, antingen 0 eller 1, med lika stor sannolikhet.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Slutligt program
Filen Main.qs
bör se ut så här. Programmet allokerar en kvantbit, placerar den i superposition, mäter kvantbiten, återställer kvantbiten och returnerar mätresultatet.
Kommentar
Symbolen //
representerar valfria kommentarer för att förklara varje steg i programmet.
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;
}
Köra programmet
Om du vill köra programmet i den inbyggda simulatorn klickar du på Kör ovanför Main
åtgärden eller trycker på Ctrl+F5. Dina utdata visas i felsökningskonsolen i terminalen.
Resultatet är antingen One
eller Zero
, som representerar en verkligt slumpmässig bit. Du kan köra programmet igen för att se ett annat resultat.
I nästa lektion implementerar du den andra fasen i kvantgeneratorn för slumptal: kombinera flera slumpmässiga bitar för att bilda ett större tal.