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 делает это автоматически для вас (если он не существует по другой причине, о которой я не знаю).

Другие вопросы по тегам