所以想法是,有四种情况: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,而且不应该;四种情况截然不同。我到底想念什么?
“ guesses”会在每个循环中重新启动;考虑针对每种情况使用不同的“ guesses”名称,例如“ guessesHH”,“ guessesLL”等。