Ćwiczenie— część 1 — tworzenie kwantowego generatora bitów losowych
W poprzedniej lekcji przedstawiono podstawowe bloki konstrukcyjne programu języka Q#. Teraz możesz przystąpić do pisania pierwszego programu kwantowego. W tej lekcji napiszesz program kwantowy, który generuje naprawdę losowy bit.
W dwóch krokach utworzysz kwantowy generator liczb losowych. Ta jednostka jest pierwszym krokiem, którymi polega na wygenerowaniu pojedynczego losowego bitu. Aby wygenerować bit losowy, należy przydzielić kubit w stanie $\ket{0}$, umieścić ten kubit w stanie superpozycji, a następnie zmierzyć kubit, aby wygenerować losową wartość bitową 0 lub 1.
Tworzenie pliku programu języka Q#
- Otwórz program Visual Studio Code.
- Otwórz menu Plik , a następnie wybierz pozycję Nowy plik tekstowy , aby utworzyć nowy plik.
- Zapisz plik jako
Main.qs.
Napisz kod języka Q# dla generatora bitów losowych w Main.qs pliku.
Definiowanie Main operacji
Operacja Main jest punktem wejścia programu. Skopiuj następujący kod do pliku Main.qs :
operation Main(): Result{
// Your code goes here
}
Przydziel kubit
Aby rozpocząć, przydziel jeden kubit za pomocą instrukcji use . W języku Q# każdy kubit przydzielany za use pomocą polecenia rozpoczyna się domyślnie w stanie $\ket{0}$. Aby przydzielić jeden kubit, skopiuj następujący kod do programu:
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
Umieść kubit w stanie superpozycji
W tym momencie nie można wygenerować losowego bitu z kubitu, ponieważ kubit jest w stanie $\ket{0}$. Jeśli zmierzysz stan tego kubitu, miara zwróci wartość bitową 0 za każdym razem.
Aby wygenerować losowy bit z miary kubitu, najpierw należy umieścić kubit w superpozycji stanu $\ket{0}$ i stanu $\ket{1}$. Aby umieścić kubit w stanie superpozycji, zastosuj operację Hadamard do kubitu. Operacja Hadamard przekształca kubit ze stanu $\ket{0}$ na równą superpozycję stanów $\ket{0}$ i $\ket{1}$.
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket + \ket{0}{1}) $$
Aby zastosować operację Hadamard na kubicie w języku Q#, użyj operacji H.
operation Main(): Result{
use q = Qubit();
H(q);
}
Uwaga
Po zastosowaniu operacji kwantowej do kubitu w języku Q# operacja nie zwraca wartości. Zamiast tego operacje wpływają na stan kubitu.
Mierzenie kubitu
Ponieważ kubit jest teraz w równym stanie superpozycji, podczas mierzenia kubitu masz 50% szansę, że pomiar zwraca wartość 0 i 50% szansę, że pomiar zwraca wartość 1.
Aby zmierzyć wartość kubitu w języku Q#, użyj M operacji i zapisz wartość miary w zmiennej result :
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
Zresetuj kubit
W języku Q# kubit musi być w stanie $\ket{0}$ zanim go zwolnisz. Użyj operacji Reset, aby zresetować kubit do stanu $\ket{0}$.
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
Zwraca wynik pomiaru
Na koniec przy użyciu instrukcji return zwróć wynik pomiaru. Ten wynik jest bitem losowym( 0 lub 1 z równym prawdopodobieństwem). Skopiuj następujący kod w Main.qs pliku:
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
Uruchamianie programu generatora bitów losowych
Utworzono program języka Q# o nazwie Main.qs , który przydziela kubit, umieszcza kubit w taki sam stan superpozycji, mierzy kubit, resetuje kubit, a następnie zwraca wynik pomiaru. Oto podsumowanie kodu języka 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;
}
Uwaga
Symbol // reprezentuje opcjonalne komentarze, które wyjaśniają każdy krok programu. Komentarze są ignorowane przez kompilator.
Aby uruchomić program w wbudowanym symulatorze, wybierz polecenie Uruchom nad Main operacją lub naciśnij Ctrl + F5. Dane wyjściowe są wyświetlane w konsoli debugowania w terminalu.
Wynik to Zero albo One, każdy z 50% szansą. Wartość miary tego bitu na komputerze kwantowym jest naprawdę losowa. Uruchom program wiele razy, aby zobaczyć, jak zmienia się wynik.
W następnej lekcji połączysz wiele losowych bitów, aby zaimplementować drugą część kwantowego generatora liczb losowych.