Ćwiczenie— część 1 — tworzenie kwantowego generatora bitów losowych

Ukończone

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#

  1. Otwórz program Visual Studio Code.
  2. Otwórz menu Plik , a następnie wybierz pozycję Nowy plik tekstowy , aby utworzyć nowy plik.
  3. 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.