这期内容当中小编将会给大家带来有关rand()与将srand()函数怎么在c++中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>一、rand() 强>
函数名:,,rand ,
功,,能:,,随机数发生器
用,,法:,,int兰德(空白);,
所在头文件:stdlib。h
<>强函数说明:强>
rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定
的范围里可看成是随机的。
rand()返回一随机数值的范围在0至RAND_MAX间.RAND_MAX的范围最少是在32767年之间(int)。用
unsigned int双字节是65535,四字节是4294967295的整数范围0 ~ RAND_MAX每个数字被选中
的机率是相同的只,,,,
用户未设定随机数种子时,系统默认的随机数种子为1 .
rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数将srand()初始化它。
<>强实例如下:强>
# include & lt; iostream>, using namespace 性病, # include , & lt; stdlib.h>,,, # include , & lt; time.h>,, 1 # define MIN ,,//随机数产生的范围,,, 10 # define MAX , int main (),,, {,, int 才能,我,,, 将srand才能((unsigned)时间(0)),, cout<才能;& lt;“Ten random numbers 得到“& lt; & lt; MIN<& lt;, ,,,,,,用“& lt; & lt; MAX<& lt;“,:/n" & lt; & lt; endl;,,, 的才能(i=0;, i<10;,我+ +),,,,,//产生随机数, ,{大敌; ,,,cout<& lt; MIN +, (int) MAX *, rand(),/,(时间+ RAND_MAX 1) & lt; & lt;“/t",,, ,,}, cout<才能;& lt; endl, ,,return 0;,,, }
<强>二,将srand() 强>
函数名:,,srand ,
功,,能:,,初始化随机数发生器,,
用,,法:,,空虚将srand (unsigned int 种子);,
所在头文件:stdlib.h
<强>函数说明:强>
将srand()用来设置rand()产生随机数时的随机数种子。
参数种子必须是个整数,通常可以利用时间(0)的返回值或NULL来当做种子。
如果每次种子都设相同值,rand()所产生的随机数值每次就会一样。
<强>实例如下:强>
# include & lt; iostream>, using namespace 性病, # include , & lt; stdlib.h>,,, # include , & lt; time.h>,, # define MIN 0,,//随机数产生的范围,,, # define MAX 99, , int main (),,, {,, int 才能,我,,, 将srand才能((unsigned)时间(NULL)),, cout<才能;& lt;“Ten random numbers 得到“& lt; & lt; MIN<& lt;, ,,,,,,用“& lt; & lt; MAX<& lt;“,:/n" & lt; & lt; endl;,,, 的才能(i=0;, i<10;,我+ +),,,,,//产生随机数, ,{大敌; ,,,cout<& lt; MIN +, rand(), %,(时间+ MAX MIN 作用;1)& lt; & lt;“/t",,, ,,}, cout<才能;& lt; endl, ,,return 0;,,, }
<强>三,rand()和将srand()的关系强>
rand()和将srand()要一起使用,其中将srand()用来初始化随机数种子,rand()用来产生随机数。
因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数将srand()初始化随机数种子.srand()的参数,用时间函数值(即当前时间),因为两次调用兰德()函数的时间通常是不同的,这样就可以保证随机性了。
<强>四,产生一定范围随机数的通用表示公式强>
要取得(a, b)的随机整数,使用(rand () % (b)) +(结果值含一个不含b)。
要取得[a, b]的随机整数,使用(rand () % (b + 1)) +(结果值含a和b)。
要取得(a, b)的随机整数,使用(rand () % (b)) + a + 1(结果值不含一含b)。
(总的来说,通用公式:+ rand () % n;其中的一个是起始值,n是整数的范围)
要取得a到b之间的随机整数,另一种表示:+ (int) b * rand ()/(RAND_MAX + 1)。
要取得0 ~ 1之间的浮点数,可以使用兰德()/双(RAND_MAX)。
<强>五,产生相同的随机数的原因强>
计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535年,当你取得65535个随机数后它们又重复出现了),
我们知道rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。