Cvičení – vytvoření kvantového generátoru náhodných bitů

Dokončeno

V předchozí lekci jste se seznámili se základními stavebními bloky programu v jazyce Q#. Teď jste připraveni napsat svůj první kvantový program: kvantový program, který generuje skutečně náhodná čísla.

Vygenerujete generátor kvantových náhodných čísel ve dvou fázích. V této lekci vytvoříte první fázi, což je vygenerování jednoho náhodného bitu.

Vytvoření programu Q#

  1. Otevřete Visual Studio Code a výběrem možnosti Soubor > nový textový soubor vytvořte nový soubor.
  2. Uložte soubor jako Main.qs. Tento soubor bude obsahovat kód Q# pro váš program.

Main Definování operace

Operace Main je vstupním bodem programu.

operation Main(): Result{

    // Your code goes here

}

Přidělení qubitu

Začnete přidělením jednoho qubitu klíčovým slovem use . V Q# začíná každý qubit, který přidělíte, ve výchozím nastavení ve stavu $\ket{0}$.

operation Main(): Result{

    // Allocate a qubit
    use q = Qubit();

}

Vložení qubitu do superpozice

Qubit je ve stavu $\ket{0}$, což není velmi užitečné pro generování náhodných čísel. Qubit musíte umístit do superpozice. K tomu použijete operaci Hadamard, Hna qubit. Operace Hadamard změní stav qubitu a umístí ji do stejné superpozice $\ket{0}$ a $\ket{1}$.

$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$

Vzhledem k tomu, že qubit je ve stejné superpozici, máte při měření 50% šanci získat 0 a 50% šanci na získání hodnoty 1.

operation Main(): Result{

    use q = Qubit();
    H(q);
}

Měření qubitu

V tomto okamžiku má qubit q 50% šanci měřit ve stavu |0〉 a 50% pravděpodobnost měření ve stavu |1〉. Pokud tedy změříte qubit, získáte náhodný bit , buď 0, nebo 1, se stejnou 50% pravděpodobností. Hodnota tohoto bitu je skutečně náhodná, neexistuje způsob, jak předem zjistit výsledek měření.

K měření hodnoty qubitu M použijte operaci a uložte měrnou hodnotu do result proměnné.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
}

Resetování qubitu

V Q# musí být každý qubit ve stavu $\ket{0}$ v době, kdy se uvolní. Použijete Reset(q) k resetování qubitu do nulového stavu.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
}

Vrácení výsledku měření

Nakonec vrátíte výsledek měření klíčovým slovem return . Tento výsledek je náhodný bit, buď 0, nebo 1, se stejnou pravděpodobností.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
    return result;
}

Konečný program

Soubor Main.qs by měl vypadat takto. Program přidělí qubit, umístí ho do superpozice, měří qubit, resetuje qubit a vrátí výsledek měření.

Poznámka:

Symbol // představuje volitelné komentáře, které vysvětlují jednotlivé kroky programu.


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;
}

Spuštění programu

Pokud chcete program spustit na integrovaném simulátoru, klikněte nad Main operací nebo stiskněte Kombinaci kláves Ctrl+F5. Výstup se zobrazí v konzole ladění v terminálu.

Výsledek je buď One nebo Zero, který představuje skutečně náhodný bit. Program můžete spustit znovu, abyste viděli jiný výsledek.

V další lekci implementujete druhou fázi kvantového generátoru náhodných čísel: zkombinujete několik náhodných bitů, abyste vytvořili větší číslo.