Øvelsesdel 1 – Opret en tilfældig kvantebitgenerator
I det forrige undermodul lærte du om de grundlæggende komponenter i et Q#-program. Nu er du klar til at skrive dit første kvanteprogram. I denne enhed skriver du et kvanteprogram, der genererer en virkelig tilfældig bit.
Du bygger din kvantetilfældige talgenerator i to trin. Denne enhed er det første trin, som er at generere en enkelt tilfældig bit. Hvis du vil generere en tilfældig bit, skal du allokere en qubit i tilstanden $\ket{0}$, sætte qubitten i en superpositionstilstand og derefter måle qubitten for at producere en tilfældig bitværdi på enten 0 eller 1.
Oprette Q#-programfilen
- Åbn Visual Studio Code.
- Åbn menuen Filer , og vælg derefter Ny tekstfil for at oprette en ny fil.
- Gem filen som
Main.qs.
Skriv din Q#-kode til den tilfældige bitgenerator i Main.qs filen.
Definer handlingen Main
Den Main handling er indgangspunktet i programmet. Kopiér følgende kode til din Main.qs fil:
operation Main(): Result{
// Your code goes here
}
Allokere en qubit
For at starte skal du tildele en qubit med sætningen use . I Q# starter hver qubit, du allokerer med use , som standard i tilstanden $\ket{0}$. Hvis du vil tildele en enkelt qubit, skal du kopiere følgende kode til dit program:
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Sæt qubitten i en superpositionstilstand
På dette tidspunkt kan du ikke generere en tilfældig bit fra qubitten, fordi qubitten er i tilstanden $\ket{0}$. Hvis du måler tilstanden af denne qubit, returnerer målingen en bitværdi på 0 hver gang.
Hvis du vil generere en tilfældig bit fra kvantbitmålingen, skal du først sætte kvantbitten i en superposition af tilstanden $\ket{0}$ og tilstanden $\ket{1}$. Hvis du vil sætte kvantbitten i en superpositionstilstand, skal du anvende en Hadamard-handling på kvantbitten. Hadamard-operationen transformerer qubitten fra tilstanden $\ket{0}$ til en lige superposition af tilstandene $\ket{0}$ og $\ket{1}$.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
Hvis du vil anvende en Hadamard-handling på din qubit i Q#, skal du bruge handlingen H :
operation Main(): Result{
use q = Qubit();
H(q);
}
Seddel
Når du anvender en kvantehandling på en qubit i Q#, returnerer handlingen ikke en værdi. I stedet påvirker handlinger qubittens tilstand.
Mål qubit
Da qubitten nu er i en lige superpositionstilstand, har du 50% chance for, at målingen returnerer 0 og 50% chance for, at målingen returnerer 1.
Hvis du vil måle qubit-værdien i Q#, skal du bruge handlingen M og gemme måleværdien i variablen result :
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Nulstil qubit
I Q# skal en qubit være i tilstanden $\ket{0}$, før du kan frigive qubitten. Brug handlingen Reset til at nulstille qubitten til tilstanden $\ket{0}$.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Returner målingsresultatet
Til sidst returneres måleresultatet med udsagnet return . Dette resultat er en tilfældig bit, enten 0 eller 1 med samme sandsynlighed. Kopiér følgende kode i din Main.qs fil:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Kør dit tilfældige bitgeneratorprogram
Du har oprettet et Q#-program, der kalder Main.qs en qubit, sætter qubitten i en lige superpositionstilstand, måler qubitten, nulstiller qubitten og derefter returnerer måleresultatet. Her er en opsummering af din Q#-kode:
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;
}
Seddel
Symbolet // repræsenterer valgfrie kommentarer, der forklarer hvert trin i programmet. Kommentarer ignoreres af compileren.
For at køre dit program på den indbyggede simulator skal du vælge Kør kodelinsen over handlingen Main eller trykke på Ctrl + F5. Dit output vises på fejlfindingskonsollen i terminalen.
Resultatet er enten Zero eller One, hver med 50% chance. Måleværdien af denne bit på en kvantecomputer er virkelig tilfældig. Kør programmet flere gange for selv at se, hvordan resultatet ændrer sig.
I den næste enhed kombinerer du flere tilfældige bits for at implementere den anden del af din kvantetilfældige talgenerator.