LCG в реализации MatLab
Привет, у меня возникли проблемы с созданием линейного конгруэнтного генератора в MatLab, который, как я обнаружил, онлайн-работа совершенно отличается от моей. затем я пытаюсь напечатать значения m и a (относительно простое, очевидно, m - большое простое число) и проверить, когда цикл полон. Я знаю все математические вещи, я привык к matlab, и мне сложно это реализовать, хотя я должен знать. моя программа выглядит так:
M = [];
for m = 100:10000;
M(m) = m;
A = [];
for a = 2:(m-1);
A(a) = a;
B = [];
R = [];
for n = 1:1000;
R(n) = n;
B(n) = A(a) * n;
K = [];
K(n)=mod(B(n),M(m));
n=n+1;
a=a+1;
m=m+1;
if K(n) == R(n)
print (m)
print (a)
print ('the cycle is done')
end
end
end
end
Также я не слишком знаком с MatLab, так что я, вероятно, создаю массивы неправильно. заранее спасибо.
1 ответ
Ну, вы на самом деле не задаете вопрос там. Вот несколько советов для вас:
1) Предварительно выделите матрицы: M = нули (9900,1), A = нули (9998,1), вы получите намного более быстрые результаты при цикле, или даже лучше, M = 100:10000 работает напрямую, если значения, которые вы хочу вставить в это так просто.
2) Вам не нужно делать a = a+1, цикл for делает это автоматически для вас (если он не существует по другой причине, о которой я не знаю).