在MatLab实施中的LCG

时间:2012-03-15 17:45:20

标签: matlab lcg

我在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 :(得分:0)

那你不是真的在那里问一个问题。以下是一些建议:

1)预分配矩阵:M =零(9900,1),A =零(9998,1),循环时会得到更快的结果,甚至更好M = 100:10000直接工作你想要输入的值就这么简单。

2)你不需要做a = a + 1,for循环会自动为你做(除非是因为我不知道其他原因)。