Övning del 1 – Skapa en kvantgenerator för slumpmässiga bitar

Slutförd

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

  1. Öppna Visual Studio Code och välj Fil > Ny textfil för att skapa en ny fil.
  2. 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, , Hpå 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.