博舍

C语言生成随机数代码 随机生成一个正整数c语言代码

C语言生成随机数代码

1#include3#include5#include7intmain(){9inta;11srand((unsigned)time(NULL));//读取系统时间,产生一个种子数值13a=rand();15printf("%d ",a);//可扩展为验证码代码17return0;19}生成一定范围内的随机数

在实际开发中,我们往往需要一定范围内的随机数,过大或者过小都不符合要求,那么,如何产生一定范围的随机数呢?我们可以利用取模的方法:

inta=rand()%10;//产生0~9的随机数,注意10会被整除

如果要规定上下限:

inta=rand()%51+13;//产生13~63的随机数

分析:取模即取余,rand()%51+13我们可以看成两部分:rand()%51是产生0~50的随机数,后面+13保证a最小只能是13,最大就是50+13=63。

代码示例:

#include#include#includeintmain(){inta;srand((unsigned)time(NULL));a=rand()%51+13;printf("%d ",a);return0;}

 

C++随机整数生成

 

1-0:MicrosoftVC++产生随机数的原理:

Srand()和Rand()函数。它本质上是利用线性同余法,y=ax+b(modm)。其中a,b,m都是常数。因此rand的产生决定于x,x被称为Seed。Seed需要程序中设定,一般情况下取系统时间作为种子。它产生的随机数之间的相关性很小,取值范围是0—32767(int),即双字节(16位数),若用unsignedint双字节是65535,四字节是4294967295,一般可以满足要求。

1-1:线性同余法:

?/P>

其中M是模数,A是乘数,C是增量,为初始值,当C=0时,称此算法为乘同余法;若C≠0,则称算法为混合同余法,当C取不为零的适当数值时,有一些优点,但优点并不突出,故常取C=0。模M大小是发生器周期长短的主要标志,常见有M为素数,取A为M的原根,则周期T=M-1。例如:

a=1220703125      

a=32719          (程序中用此组数)   

    a=16807         

代码:

voidmain()

{

constintn=100;

doublea=32719,m=1,f[n+1],g[n],seed;

m=pow(2,31);

cout

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇