Übung: Erstellen eines Quanten-Zufallsbit-Generators

Abgeschlossen

Klassische Computer erzeugen keine Zufallszahlen, sondern Pseudozufallszahlen. Ein Pseudozufallszahlen-Generator generiert eine deterministische Sequenz von Zahlen auf Grundlage eines Ausgangswerts, der als Seed bezeichnet wird. Um sich Zufallswerten besser anzunähern, ist dieser Ausgangswert oft die aktuelle Zeit der CPU-Uhr.

Quantencomputer hingegen können echte Zufallszahlen generieren. Dies liegt daran, dass die Messung eines Qubits in der Superposition ein probabilistischer Prozess ist. Das Ergebnis der Messung ist zufällig und es gibt keine Möglichkeit, das Ergebnis vorherzusagen. Dies ist das Grundprinzip von Quanten-Zufallszahlengeneratoren.

Definieren des QRNG-Problems

Sie beginnen mit einem Qubit in einem Basiszustand, z. B. 0. Im ersten Schritt versetzt der QRNG das Qubit mit einem H-Vorgang in eine ausgewogene Superposition. Die Messung dieses Zustands ergibt 0 oder 1, wobei die Wahrscheinlichkeit der beiden Ergebnisse 50 % beträgt. Der Wert dieses Bits ist wirklich zufällig, Sie können nicht wissen, welches Ergebnis Sie mit der Messung erhalten. Aber wie können Sie dieses Verhalten verwenden, um größere Zufallszahlen zu generieren?

Angenommen, Sie wiederholen den Prozess viermal und erzeugen dabei diese Folge von Binärzahlen:

$${0, 1, 1, 0}$$

Wenn Sie diese Bits verketten oder in eine Bitzeichenfolge kombinieren, können Sie eine größere Zahl bilden. In diesem Beispiel entspricht die Bitfolge ${0110}$ der Dezimalzahl 6.

$${0110_{\ binary} \equiv 6_{\ decimal}}$$

Wenn Sie diesen Prozess mehrmals wiederholen, können Sie mehrere Bits zu einer beliebigen großen Zahl kombinieren.

Sie erstellen Ihren Quanten-Zufallszahlen-Generator in zwei Phasen. In dieser Einheit erstellen Sie die erste Phase, in der ein einzelnes Zufallsbit generiert wird.

Dazu gehen Sie wie folgt vor:

  1. Zuordnen eines Qubits.
  2. Wenden Sie den H-Vorgang an, um ein Qubit in eine Superposition zu setzen.
  3. Messen Sie das Qubit, um ein zufälliges Bit zu erhalten.
  4. Setzen Sie das Qubit auf den Nullzustand zurück.

Erstellen eines Q#-Programms

  1. Öffnen Sie Visual Studio Code und wählen Sie Datei > Neue Textdatei aus, um eine neue Datei zu erstellen.

  2. Speichern Sie die Datei unter dem Namen RandomNumberGenerator.qs. Diese Datei enthält den Q#-Code für Ihr Programm.

  3. Kopieren Sie den folgenden Code in die RandomNumberGenerator.qs-Datei.

    namespace QuantumRandomNumberGenerator {
    
        @EntryPoint()
        operation GenerateRandomBit() : Result {
            // Allocate a qubit.
            use q = Qubit();
    
            // Set the qubit into superposition of 0 and 1 using the Hadamard 
            H(q);
    
            // At this point the qubit `q` has 50% chance of being measured in the
            // |0〉 state and 50% chance of being measured in the |1〉 state.
            // Measure the qubit value using the `M` operation, and store the
            // measurement value in the `result` variable.
            let result = M(q);
    
            // Reset qubit to the |0〉 state.
            // Qubits must be in the |0〉 state by the time they are released.
            Reset(q);
    
            // Return the result of the measurement.
            return result;
        }
    }
    

Tipp

Der QDK enthält eine Reihe integrierter Q#-Beispiele, die Sie verwenden können, um mehr über Q# und Quantum Computing zu erfahren. Um die Beispiele anzuzeigen, öffnen Sie eine neue Q#-Datei, geben Sie sample ein und wählen Sie dann das Beispiel, das Sie in der Liste der Optionen anzeigen möchten, aus. Sie finden den Q#-Code in dieser Einheit unter „Random Bit Sample“.

Erkunden des Q#-Codes

  1. Zeigen Sie mit der Maus auf den H-Vorgang, um eine kurze Zusammenfassung der Definition anzuzeigen.
  2. Platzieren Sie den Cursor vor dem H-Vorgang, klicken Sie mit der rechten Maustaste und wählen Sie Zur Definition wechseln aus. Dadurch wird eine schreibgeschützte Ansicht des Standardbibliothekscodes für die Funktion geöffnet.

Lokales Ausführen des Programms

  1. Öffnen Sie ein neues Terminal, Terminal > Neues Terminal.
  2. Wenn Sie Ihr Programm lokal im integrierten Simulator einem Testlauf unterziehen möchten, klicken Sie auf Ausführen in der Liste der Befehle unter @EntryPoint() oder drücken Sie STRG+F5. Die Ausgabe wird in der Debugkonsole angezeigt.
  3. Führen Sie das Programm erneut aus, um ein anderes Ergebnis anzuzeigen.

In der nächsten Einheit implementieren Sie die zweite Phase des Quanten-Zufallszahlen-Generators: Die Kombination mehrerer Zufallsbits, um eine größere Zahl zu bilden.