Øvelse Del 1 – Opprett en quantum random bit generator

Fullført

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

  1. Åpne Visual Studio Code.
  2. Åpne Fil-menyen , og velg deretter Ny tekstfil for å opprette en ny fil.
  3. 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.