【发布时间】:2022-11-26 12:00:55
【问题描述】:
我正在关注 Microsoft 官方学习页面 (https://learn.microsoft.com/en-us/azure/quantum/tutorial-qdk-explore-entanglement?pivots=ide-azure-portal) 中关于量子纠缠的教程。
基本上,我复制了一个发布在那里的示例,但出现错误:
QS5026 此处无法重新分配变量“numOnesQ1”。在依赖于测量结果的条件块中,目标 QuantinuumProcessor 仅支持重新分配在块内声明的变量。
我明白它说的是什么,但它只是 Microsoft 官方教程的副本。我是否遗漏了一些简单的东西,比如导入、错误的设置?如果没有,我如何以其他方式设置在依赖于测量结果的条件块之外声明的变量?
这是我的代码:
namespace Quantum.QuantumDream {
open Microsoft.Quantum.Canon;
open Microsoft.Quantum.Intrinsic;
operation GetRandomResult() : Result {
use q = Qubit();
H(q);
return M(q);
}
@EntryPoint()
operation TestBellState(count : Int, initial : Result) : (Int, Int, Int, Int) {
mutable numOnesQ1 = 0;
mutable numOnesQ2 = 0;
// allocate the qubits
use (q1, q2) = (Qubit(), Qubit());
for test in 1..count {
SetQubitState(initial, q1);
SetQubitState(Zero, q2);
// measure each qubit
let resultQ1 = M(q1);
let resultQ2 = M(q2);
// Count the number of 'Ones':
if resultQ1 == One {
set numOnesQ1 += 1;
}
if resultQ2 == One {
set numOnesQ2 += 1;
}
}
// reset the qubits
SetQubitState(Zero, q1);
SetQubitState(Zero, q2);
// Return number of |0> states, number of |1> states
Message("q1:Zero, One q2:Zero, One");
return (count - numOnesQ1, numOnesQ1, count - numOnesQ2, numOnesQ2 );
}
operation SetQubitState(desired : Result, target : Qubit) : Unit {
if desired != M(target) {
X(target);
}
}
}
【问题讨论】:
标签: quantum-computing q#