📄 使用线性同余算法产生伪随机数c语言模拟.txt
字号:
使用线性同余算法产生伪随机数C语言模拟[原创]
C语言中有个random(n)函数,可以产生0——n-1之间的伪随机数,rand()函数可以产生0——32767之间的伪随机数,一般需要配合使用srand(long)给出随机种子,或者使用randomize()函数来根据系统时间指定随机种子。
常用的产生伪随机数的算法是线性同余法,下面是我写的代码,相信通过代码,大家可以很容易地明白伪随机数原理:
算法:an+1=b*an+c mod m;a0=d。d为种子。
int d;/*种子*/
long My_Rand(long b,long c,long m)
{
return d=(b*d+c)%m;/*产生随机数,并记录,用来产生下一个伪随机数*/
}
long gcd1(long m,long n)
{/*求最大公约数,算法中的b和m一般取互素*/
long r;
while((r=m%n)!=0)
{
m=n;
n=r;
}
return n;
}
long gcd(long m)
{/*计算与m互素的b*/
long i=2;
while(gcd1(i,m)!=1)
i++;
return i;
}
void main()
{
long b,c,m;
int count;
int i;
m=32767;
b=gcd(m);
c=5001;
d=3;
count=800;
for(i=0;i<count;i++)/*产生800个伪随机数*/
{
if(i%10==0)
printf("\n");
printf("%8ld",My_Rand(b,c,m));
}
}
当种子d为131时运行结果如下:
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
30434 365 5761 16553 5370 15771 3806 12643 30317 131
5293 15617 3498 12027 29085 30434 365 5761 16553 5370
15771 3806 12643 30317 131 5293 15617 3498 12027 29085
当种子数为151时,运行结果如下:
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
31714 2925 10881 26793 25850 23964 20192 12648 30327 151
5333 15697 3658 12347 29725 31714 2925 10881 26793 25850
23964 20192 12648 30327 151 5333 15697 3658 12347 29725
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -