LCG в реализации MatLab - PullRequest
       21

LCG в реализации MatLab

0 голосов
/ 15 марта 2012

Привет, у меня возникли проблемы с созданием линейного конгруэнтного генератора в 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 Ответ

0 голосов
/ 15 марта 2012

Ну, вы на самом деле не задаете вопрос там. Вот несколько советов для вас:

1) Предварительно выделите матрицы: M = нули (9900,1), A = нули (9998,1), вы получите гораздо более быстрые результаты при цикле, или даже лучше, если M = 100: 10000 работает напрямую, если значения, которые вы хотите ввести, очень просты.

2) Вам не нужно делать a = a + 1, цикл for делает это автоматически для вас (если он не существует по другой причине, о которой я не знаю).

...