operation QTest() : (Result, Result)
{
body
{
// 用于保存量子位状态的可变局部变量
mutable s1 = Zero;
mutable s2 = Zero;
// 分配两个量子位
using (qubits = Qubit[2])
{
// 将第一个量子位执行阿达马门实现状态叠加
H(qubits[0]);
// 通过可控非门将两个量子进行纠缠
CNOT(qubits[0], qubits[1]);
// 测量两个量子位的状态
set s1 = M(qubits[0]);
set s2 = M(qubits[1]);
// 释放量子位前需要将其重置0状态
Set(Zero, qubits[0]);
Set(Zero, qubits[1]);
}
// 返回两个量子位的状态
return (s1, s2);
}
static void Main(string[] args)
{
using (var sim = new QuantumSimulator())
{
for (int i = 0; i < 10; i++)
{
var (s1, s2) = QTest.Run(sim).Result;
Console.WriteLine($"第{i}次:Q1状态 {s1,-5} Q2状态 {s2,-5}");
}
}
Console.WriteLine("按任意键继续...");
Console.ReadKey();
}
来源:oschina
链接:https://my.oschina.net/lvguanglin/blog/3170853