嗨,我在MatLab中创建线性同余生成器时遇到了麻烦,我在网上发现的那些生成器与我的工作方式完全不同。然后,我尝试打印m和a的值(相对质数,显然m是一个大素数),并检查周期是否已满。我知道所有的数学知识,我开始习惯于matlab,即使我应该知道,但对我来说很难实现它。我的程序看起来像这样: for m = 100:10000; for a = 2:(m-1); B = []; for n = 1:1000;
R(n) = n;
我正在编写两个随机游走程序,一个使用Java API Math.random() (运行良好),另一个使用LCG,但范围为8的LCG只返回偶数(2、4、6和8)。我以前从来没有尝试过制作我自己的LCG,我的a和c的值来自于维基百科的一篇文章,如果这些是问题,并且有人有好的方法为a和c提供好的值,那就太好了。对于种子,我使用System.nanoTime()。
这是Python中的一个简单的: # https://en.wikipedia.org/wiki/Lehmer_random_number_generator n = n * 48271 % 0x7ffffffffor i in range(10**8):Python 2.7在这里要快得多。Python3.9中的运行时间相比降低了110-115% ( macbook上的自制CPythons )