練習部分 1 - 建立量子隨機位元產生器
在上一個單元中,您已了解 Q# 程式的基本建置組塊。 現在,您已準備好撰寫您的第一個量子程式: 量子程式來產生真正的隨機數。
您將會在兩個階段中建置您的量子亂數產生器。 在本單元中,您會建置第一個階段,也就是產生單一隨機位元。
建立 Q# 程式
- 開啟 Visual Studio Code,然後選取 [檔案 > 新增文字檔] 以建立新的檔案。
- 將檔案儲存為
Main.qs
。 此檔案會包含您程式的 Q# 程式碼。
定義 Main
運算
此 Main
作業是您程式的進入點。
operation Main(): Result{
// Your code goes here
}
配置量子位元
首先,您會使用 use
關鍵詞配置一個量子位元。 在 Q# 中,您設定的每個量子位元預設都會以 $\ket{0}$ 狀態啟動。
operation Main(): Result{
// Allocate a qubit
use q = Qubit();
}
將量子位元放入疊加
量子位元處於 $\ket{0}$ 狀態,這並不適用於產生隨機數字。 您需要將量子位元放入疊加。 若要這樣做,請將 Hadamard 作業、H
套用至量子位元。 Hadamard 作業會變更量子位元的狀態,並將其放入 $\ket{0}$ 和 $\ket{1}$ 的相等疊加。
$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$
因為量子位元處於相等疊加,所以當您測量量子位元時,您有 50% 的機會得到 0; 有 50% 的機會得到 1。
operation Main(): Result{
use q = Qubit();
H(q);
}
測量量子位元
此時,量子位元 q
有 50% 的機會在 |0> 狀態下測量,而有 50% 的機會在 |1> 狀態下測量。 因此,若您測量量子位元時,您會收到 0 或 1 的隨機位元,機率等於 50%。 此位元的值是真正隨機的,無法事先知道測量的結果。
若要測量量子位元值,請使用 M
作業,並將測量值儲存在 result
變數中。
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
}
重設量子位元
在 Q# 中,每個量子位元在釋放時必須處於 $\ket{0}$ 狀態。 您可以使用 Reset(q)
將量子位元重設為零狀態。
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
}
傳回測量結果
最後,您會使用 return
關鍵詞傳回測量結果。 此結果為隨機位元,可以是 0 或 1,機率相等。
operation Main(): Result{
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
最終程式
您的 Main.qs
檔案看起來應該像這樣。 程式會配置量子位元、將其放入疊加、測量量子位元、重設量子位元,並傳回測量結果。
注意
//
符號代表選擇性註解,以說明程式的每個步驟。
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;
}
執行程式
若要在內建模擬器上執行程式,請按一下 Main
作業上方的 [執行],或按 Ctrl+F5。 您的輸出會出現在終端機的偵錯主控台中。
結果為 One
或 Zero
,代表真正的隨機位元。 您可以再次執行程式以查看不同的結果。
在下一個單元中,您會實作量子亂數產生器的第二個階段:結合多個隨機位元來形成更大的數字。