Gyakorlat – Kvantumalapú véletlenbit-generátor létrehozása

Befejeződött

A kvantum véletlenszerű számgenerátorát két fázisban építheti ki. Ebben a leckében az első fázist építi ki, amely egyetlen véletlenszerű bitet hoz létre.

Véletlenszerű bitgenerátor definiálása

Először a qubit kiosztásával kell kezdenie. Amikor lefoglal egy qubitet, az $\ket{0}$ állapotban van, ami nem túl hasznos véletlenszerű számok létrehozásához. A qubitet szuperpozícióba kell helyeznie. Ezt úgy teheti meg, Hhogy a Hadamard kaput alkalmazza a qubitre. A Hadamard-kapu a qubitet $\ket$ és $\ket{0}{1}$ egyenlő szuperpozícióba helyezi.

A qubit mérésekor 0 vagy 1 véletlenszerű bitet kap 50%-os valószínűséggel. Ennek a bitnek az értéke valóban véletlenszerű, nem lehet tudni, mit kap a mérés után.

A Q#-program létrehozása

  1. Nyissa meg a Visual Studio Code-ot, és válassza a Fájl > új szövegfájlja lehetőséget egy új fájl létrehozásához.

  2. Mentse a fájlt RandomNumberGenerator.qs néven. Ez a fájl tartalmazza a program Q#-kódját.

  3. Másolja a következő kódot a RandomNumberGenerator.qs fájlba.

    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;
        }
    }
    

Most vizsgáljuk meg az új kódot.

  • Először lefoglal egy qubitet a Qubit() művelettel és a use kulcsszóval.
  • Ezután a Hadamard művelet a qubitet szuperpozícióba helyezi, H(q).
  • Ezután megméri a qubitet, hogy véletlenszerű bitet kapjon. M(q)
  • Reset(q) Végül alaphelyzetbe állítja a qubitet a nulla állapotra. A qubiteknek $\ket{0}$ állapotban kell lenniük a felszabadításukig.

A program helyi futtatása

Ha helyileg szeretné futtatni a programot a beépített szimulátoron, futtassa az alábbi @EntryPoint()parancsok listájából, vagy nyomja le a Ctrl+F5 billentyűkombinációt. A kimenet megjelenik a terminál hibakeresési konzolján.

Az eredmény valóban véletlenszerű. A program ismét futtatható egy másik eredmény megjelenítéséhez.

A következő leckében implementálja a kvantum véletlenszerű számgenerátor második fázisát: több véletlenszerű bit kombinálásával nagyobb számot alkot.