线性同余法生成伪随机数的伪代码:Random(n,m,seed,a,b) { r[0] = seed; for (i = 1;i <=n;i++) r[i] = (a*r[i-1] + b) mod m } 其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2w,w是计算机的字长;a可以是0.01w和0.99w之间的任何整数。应用递推公式产生均匀分布随机数时,式中参数n0,a,b,M的选取十分重要。 中国网管论坛 例如,选取M=10,a=b =n0=7,生成的随机序列为{6,9,0,7,6,9,……},周期为4。取M=16,a=5,b =3,n0=7,生成的随机序列为{6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1……},周期为16。取M=8,a=5,b =1,n0=1,生成的随机序列为{6,7,4,5,2,3,0,1,6,7……},周期为8。
The art of computer programming.想研究算法就去看吧, 有Random为啥不用?
你随便*10就好了
{
r[0] = seed;
for (i = 1;i <=n;i++)
r[i] = (a*r[i-1] + b) mod m
} 其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2w,w是计算机的字长;a可以是0.01w和0.99w之间的任何整数。应用递推公式产生均匀分布随机数时,式中参数n0,a,b,M的选取十分重要。 中国网管论坛 例如,选取M=10,a=b =n0=7,生成的随机序列为{6,9,0,7,6,9,……},周期为4。取M=16,a=5,b =3,n0=7,生成的随机序列为{6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1……},周期为16。取M=8,a=5,b =1,n0=1,生成的随机序列为{6,7,4,5,2,3,0,1,6,7……},周期为8。