c语言的一些常见的算法以及思考和改进的文章,写的很不错,花费了很大的精力从网络了搜罗的,希望大家喜欢.
源代码在线查看: 使用线性同余算法产生伪随机数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 {
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