Øvelse Del 1 – Opprett en quantum random bit generator
I den forrige enheten lærte du om de grunnleggende byggesteinene i et Q#-program. Nå er du klar til å skrive ditt første kvanteprogram. I denne enheten skriver du et kvanteprogram som genererer en virkelig tilfeldig bit.
Du bygger din kvantetilfeldige tallgenerator i to trinn. Denne enheten er det første trinnet, som er å generere en enkelt tilfeldig bit. Hvis du vil generere en tilfeldig bit, tildeler du en kvantebit i tilstanden $\ket{0}$, setter den kvantebiten i en superposisjonstilstand, og deretter måler du kvantebiten for å produsere en tilfeldig bitverdi på enten 0 eller 1.
Opprette Q#-programfilen
- Åpne Visual Studio Code.
- Åpne Fil-menyen , og velg deretter Ny tekstfil for å opprette en ny fil.
- Lagre filen som
Main.qs.
Skriv Q#-koden for den tilfeldige bitgeneratoren Main.qs i filen.
Definer Main-operasjonen
Operasjonen Main er inngangspunktet for programmet. Kopier følgende kode til Main.qs filen:
operation Main(): Result{
// Your code goes here
}
Tildele en qubit
For å starte, tildel én qubit med setningen use . I Q# starter hver qubit du tildeler med use i tilstanden $\ket{0}$ som standard. For å tildele en enkelt kvantebit, kopier følgende kode til programmet ditt:
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Sett kvantebiten i en superposisjonstilstand
På dette tidspunktet kan du ikke generere en tilfeldig bit fra kvantebiten fordi kvantebiten er i tilstanden $\ket{0}$. Hvis du måler tilstanden til denne kvantebiten, vil målingen returnere en bitverdi på 0 hver gang.
Hvis du vil generere en tilfeldig bit fra kvantebitmålingen, må du først sette kvantebiten i en superposisjon av $\ket{0}$-tilstanden og $\ket{1}$-tilstanden. Hvis du vil sette kvantebiten i en superposisjonstilstand, bruker du en Hadamard-operasjon på kvantebiten. Hadamard-operasjonen transformerer kvantebiten fra $\ket{0}$-tilstanden til en lik superposisjon av $\ket{0}$- og $\ket{1}$-tilstandene.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
Hvis du vil bruke en Hadamard-operasjon på kvantebiten i Q#, bruker du operasjonen H :
operation Main(): Result{
use q = Qubit();
H(q);
}
Notat
Når du bruker en kvanteoperasjon på en kvantebit i Q#, returnerer ikke operasjonen en verdi. I stedet påvirker operasjoner tilstanden til kvantebiten.
Måle qubit
Fordi kvantebiten nå er i en lik superposisjonstilstand, har du 50% sjanse for at målingen returnerer en 0 og en 50% sjanse for at målingen returnerer en 1 når du måler kvantebiten.
Hvis du vil måle kvantebitverdien i Q#, bruker du operasjonen M og lagrer måleverdien i variabelen result :
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Tilbakestille qubit
I Q# må en kvantebit være i tilstanden $\ket{0}$ før du kan frigi kvantebiten. Bruk operasjonen Reset til å tilbakestille kvantebiten til $\ket{0}$-tilstanden.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Returner målresultatet
Til slutt returnerer du måleresultatet med setningen return . Dette resultatet er en tilfeldig bit, enten 0 eller 1 med lik sannsynlighet. Kopier følgende kode i Main.qs filen:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Kjør ditt tilfeldige bitgeneratorprogram
Du opprettet et Q#-program kalt Main.qs som tildeler en kvantebit, setter kvantebiten i en lik superposisjonstilstand, måler kvantebiten, tilbakestiller kvantebiten og returnerer deretter måleresultatet. Her er en oppsummering av Q#-koden din:
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;
}
Notat
Symbolet // representerer valgfrie kommentarer som forklarer hvert trinn i programmet. Kommentarer ignoreres av kompilatoren.
For å kjøre programmet på den innebygde simulatoren, velg Kjør kodelinse over operasjonen Main , eller trykk Ctrl + F5. Utdataene dine vises på feilsøkingskonsollen i terminalen.
Resultatet er enten Zero eller One, hver med 50% sjanse. Måleverdien av denne biten på en kvantedatamaskin er virkelig tilfeldig. Kjør programmet flere ganger for å se selv hvordan resultatet endres.
I neste enhet kombinerer du flere tilfeldige biter for å implementere den andre delen av kvantetilfeldig tallgenerator.