【问题标题】:QS5026 - The variable cannot be reassigned hereQS5026 - 无法在此处重新分配变量
【发布时间】: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#


    【解决方案1】:

    本教程代码只能在本地模拟器上运行(在 Jupyter Notebook 中使用 %simulate 魔术命令)。从错误消息来看,您似乎已尝试在其中一个 Quantinuum 目标上运行它,这对您可以在代码中执行的操作类型有一些限制。要在 Quantinuum 上运行等效代码,您需要为循环主体定义一个操作(准备状态并测量它)并将其作为作业运行 - 云目标将自行处理循环,运行您的多次编码并返回结果的直方图。例如,您可以在 Azure 门户的示例库中查看 QRNG 示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      相关资源
      最近更新 更多