首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MatLab实现中的LCG

MatLab实现中的LCG
EN

Stack Overflow用户
提问于 2012-03-16 01:45:20
回答 1查看 2.2K关注 0票数 0

嗨,我在MatLab中创建线性同余生成器时遇到了麻烦,我在网上发现的那些生成器与我的工作方式完全不同。然后,我尝试打印m和a的值(相对质数,显然m是一个大素数),并检查周期是否已满。我知道所有的数学知识,我开始习惯于matlab,即使我应该知道,但对我来说很难实现它。我的程序看起来像这样:

代码语言:javascript
复制
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,所以我创建数组的方式可能是错误的。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-03-16 03:15:53

你并不是真的在问问题。这是给你的一些建议:

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

2)你不需要做a= a+1,for循环会自动为你做(除非它是出于另一个我不知道的原因)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9725245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档