Cvičení – vytvoření kvantového generátoru náhodných bitů
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#
- Otevřete Visual Studio Code a výběrem možnosti Soubor > nový textový soubor vytvořte nový soubor.
- 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, H
na 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.