Øvelsesdel 1 – Opret en tilfældig kvantebitgenerator

Fuldført

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

  1. Åbn Visual Studio Code.
  2. Åbn menuen Filer , og vælg derefter Ny tekstfil for at oprette en ny fil.
  3. 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.