让窃听者猜测哪个图是正确的,并计算需要多少次? (MATLAB)

问题描述 投票:0回答:1

所以想法是,有四种情况:HH,LL,LH和HL。每个都基于标准的普通RNG(randn(n,1))。窃听者进行测量并将其记录下来;其中一个与四个都相同。我正在尝试编写一个程序,以计算窃听者破解案件所花费的时间,偏差在1%以内。例如,HH的第一点可能与LL的第一点相同。这就是为什么窃听者需要继续进行测量,直到消除可能性并仅保留一种情况。每个案例有1000分:

n = 1000;

我的方法是,将实测案例与四个案例之间的差异:

diffHH = M - HH;
diffLL = M - LL;
diffHL = M - HL;
diffLH = M - LH;

然后,我编写了四个for循环来检查每种情况:

for guesses = 1:1:n
    if (abs(diffHH(guesses)) <= 0.01) 
        if (abs(diffHH(guesses)) <= 0.01) && (abs(diffLL(guesses)) <= 0.01)
            continue;
        elseif (abs(diffHH(guesses)) <= 0.01)&& (abs(diffHL(guesses)) <= 0.01)
            continue;
        elseif (abs(diffHH(guesses)) <= 0.01) && (abs(diffLL(guesses)) <= 0.01)
            continue;
        else
            disp('Eve guesses HH');
            break;
        end
    end
end
for guesses = 1:1:n
    if (abs(diffLL(guesses)) <= 0.01) 
        if (abs(diffLL(guesses)) <= 0.01) && (abs(diffHH(guesses)) <= 0.01)
            continue;
        elseif (abs(diffLL(guesses)) <= 0.01)&& (abs(diffHL(guesses)) <= 0.01)
            continue;
        elseif (abs(diffLL(guesses)) <= 0.01) && (abs(diffLH(guesses)) <= 0.01)
            continue;
        else
            disp('Eve guesses LL');
            break;
        end
    end
end
for guesses = 1:1:n
    if (abs(diffHL(guesses)) <= 0.01) 
        if (abs(diffHL(guesses)) <= 0.01) && (abs(diffHH(guesses)) <= 0.01)
            continue;
        elseif (abs(diffHL(guesses)) <= 0.01)&& (abs(diffLL(guesses)) <= 0.01)
            continue;
        elseif (abs(diffHL(guesses)) <= 0.01) && (abs(diffLH(guesses)) <= 0.01)
            continue;
        else
            disp('Eve guesses HL');
            break;
        end
    end
end
for guesses = 1:1:n
    if (abs(diffLH(guesses)) <= 0.01) 
        if (abs(diffLH(guesses)) <= 0.01) && (abs(diffHH(guesses)) <= 0.01)
            continue;
        elseif (abs(diffLH(guesses)) <= 0.01)&& (abs(diffLL(guesses)) <= 0.01)
            continue;
        elseif (abs(diffLH(guesses)) <= 0.01) && (abs(diffHL(guesses)) <= 0.01)
            continue;
        else
            disp('Eve guesses LH');
            break;
        end
    end
end

猜测似乎持续上升到1000,而且不应该;四种情况截然不同。我到底想念什么?

matlab for-loop random counter gaussian
1个回答
0
投票

“ guesses”会在每个循环中重新启动;考虑针对每种情况使用不同的“ guesses”名称,例如“ guessesHH”,“ guessesLL”等。

© www.soinside.com 2019 - 2024. All rights reserved.