Gyakorlat – Kvantumalapú véletlenbit-generátor létrehozása
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, H
hogy 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
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.
Mentse a fájlt
RandomNumberGenerator.qs
néven. Ez a fájl tartalmazza a program Q#-kódját.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 ause
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.