天天看點

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

1 建立開發環境

1.1 安裝 Visual Studio Code

Visual Studio Code 官方下載下傳位址

1.2 安裝 .NET Core

.NET Core 官方下載下傳位址

1.3 為 Visual Studio Code 安裝 QDK

QDK 安裝官方位址

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

點選install進行安裝即可。

1.4 安裝 Quantum 項目模闆

在 Visual Studio Code 中,選擇 View -> Command Palette,輸入

Q#: Install project templates

等待一段時間。

1.5 為 Visual Studio Code 安裝 C#

在 Visual Studio Code 中,選擇左側欄中的方格圖示(Extensions),然後在搜尋框(Search Extensions in Marketplace)中輸入 C# 搜尋并安裝(install),安裝好後應如下圖所示。

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

2 建立一個hello項目

在 Visual Studio Code 中,選擇 View -> Command Palette,輸入

Q#: Create New Project

,選擇 Standalone console application,然後選擇一個存放項目檔案的路徑,通常使用 QuantumHello 作為項目名稱,建立項目。

随後視窗右下角将出現建立新項目成功…等字樣,如下圖所示,并選擇 Open new project.

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

選擇 View -> Explorer,會看到兩個檔案,即 QuantumHello.csproj 和 Program.qs,csproj 檔案定義項目配置,Program.qs 則是一個自動生成的基本的Q#程式,該程式将消息 “Hello quantum world!” 列印到控制台,無需修改,可以直接運作。

選擇 View -> Terminal,輸入

dotnet run

即可,運作成功則如下圖所示。

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

如果在上述過程中出現一些錯誤,例如下圖所示的情況,選擇 Yes 或 Install 即可。

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式
使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

如果還是不順利,可以嘗試下重新開機 Visual Studio Code 或者重新開機電腦。

3 寫一個量子随機正整數生成器程式

建立一個新項目,與第二步中建立項目的步驟相同,并将如下代碼替換到 Program.qs 中。該代碼的功能是根據給定的最小值 min 和最大值 max(都是正整數),随機生成一個在區間 [min,max] 的正整數。

namespace QuantumRNG {
    open Microsoft.Quantum.Canon;
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Measurement;
    open Microsoft.Quantum.Math;
    open Microsoft.Quantum.Convert;
    
    operation GenerateRandomBit() : Result {
        // Allocate a qubit.
        using (q = Qubit()) {
            // Put the qubit to superposition.
            H(q);
            // It now has a 50% chance of being measured 0 or 1.
            // Measure the qubit value.
            return MResetZ(q);
        }
    }

    operation SampleRandomNumberInRange(max : Int, min : Int) : Int {
        mutable output = 0; 
        repeat {
            mutable bits = new Result[0]; 
            for (idxBit in 1..BitSizeI(max)) {
                set bits += [GenerateRandomBit()]; 
            }
            set output = ResultArrayAsInt(bits);
        } until (output >= min and output <= max);
        return output;
    }

    @EntryPoint()
    operation SampleRandomNumber() : Int {
        let max = 500;
        let min = 100;
        Message($"Sampling a random number between {min} and {max}: ");
        return SampleRandomNumberInRange(max, min);
    }
}
           

運作情況:

使用 Quantum 開發工具包寫出第一個 Q# 生成量子随機正整數的程式

注意:輸入

dotnet run

可以首次生成 Program.qs,如果沒有對 Program.qs 進行任何的改動,還想繼續運作,則無需重新生成它,輸入

dotnet run --no-build

即可。但若進行了代碼修改,則必須輸入

dotnet run

來重新生成。

繼續閱讀