Cvičení – část 1 – 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. V této lekci napíšete kvantový program, který generuje skutečně náhodný bit.
Kvantový generátor náhodných čísel vytvoříte ve dvou krocích. Tato jednotka je prvním krokem, který spočívá ve vygenerování jednoho náhodného bitu. Pokud chcete vygenerovat náhodný bit, přidělíte qubit ve stavu $\ket{0}$, tento qubit umístíte do superpozice a pak změříte qubit tak, aby vytvořil náhodnou bitovou hodnotu 0 nebo 1.
Vytvoření souboru programu Q#
- Otevřete Visual Studio Code.
- Otevřete nabídku Soubor a potom zvolte Nový textový soubor a vytvořte nový soubor.
- Uložte soubor jako
Main.qs.
Napište kód Q# pro generátor náhodných bitů Main.qs v souboru.
Main Definování operace
Operace Main je vstupním bodem programu. Zkopírujte následující kód do souboru Main.qs.
operation Main(): Result{
// Your code goes here
}
Přidělení qubitu
Začněte přidělením jednoho qubitu use pomocí příkazu. V Q# každý qubit, který přidělíte pomocí use, začíná ve výchozím nastavení ve stavu $\ket{0}$. Pokud chcete přidělit jeden qubit, zkopírujte do programu následující kód:
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Vložení qubitu do stavu superpozice
V tomto okamžiku nemůžete vygenerovat náhodný bit z qubitu, protože qubit je ve stavu $\ket{0}$. Pokud změříte stav tohoto qubitu, bude měření pokaždé vracet bitovou hodnotu 0.
Pokud chcete vygenerovat náhodný bit z měření qubitu, musíte nejprve qubit vložit do superpozice stavu $\ket{0}$ a stavu $\ket{1}$. Pokud chcete qubit vložit do stavu superpozice, použijte u qubitu operaci Hadamard. Operace Hadamard transformuje qubit ze stavu $\ket{0}$ na stejnou superpozici stavů $\ket{0}$ a $\ket{1}$.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
Pokud chcete u qubitu v Q# použít operaci Hadamard, použijte H tuto operaci:
operation Main(): Result{
use q = Qubit();
H(q);
}
Poznámka:
Když použijete kvantovou operaci na qubit v jazyce Q#, operace nevrací hodnotu. Místo toho operace ovlivňují stav qubitu.
Měření qubitu
Vzhledem k tomu, že qubit je teď ve stejném stavu superpozice, při měření qubitu máte 50% šanci, že měření vrátí hodnotu 0 a 50% šanci, že měření vrátí hodnotu 1.
Pokud chcete změřit hodnotu qubitu v jazyce Q#, použijte M operaci a uložte hodnotu měření do result proměnné:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Resetování qubitu
V Q# musí být qubit ve stavu $\ket{0}$, abyste mohli qubit uvolnit.
Reset Pomocí operace resetujte qubit do stavu $\ket{0}$.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Vrácení výsledku měření
Nakonec vrátí výsledek měření příkazem return . Tento výsledek je náhodný bit, buď 0, nebo 1 se stejnou pravděpodobností. Zkopírujte následující kód do svého Main.qs souboru.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Spuštění programu generátoru náhodných bitů
Vytvořili jste program Q#, který přiděluje Main.qs qubit, umístí qubit do stejného stavu superpozice, měří qubit, resetuje qubit a vrátí výsledek měření. Tady je rekapitulace kódu Q#:
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;
}
Poznámka:
Symbol // představuje volitelné komentáře, které vysvětlují jednotlivé kroky programu. Kompilátor ignoruje komentáře.
Pokud chcete program spustit na integrovaném simulátoru, zvolte kódový objektiv Spustit nad operací Main, nebo stiskněte Ctrl + F5. Výstup se zobrazí v konzole ladění v terminálu.
Výsledek je buď Zero nebo One, každý s 50% šance. Hodnota měření tohoto bitu v kvantovém počítači je skutečně náhodná. Spusťte program několikrát, abyste viděli, jak se výsledek mění.
V další lekci zkombinujete několik náhodných bitů a implementujete druhou část kvantového generátoru náhodných čísel.