rand()与将srand()函数怎么在c++中使用

  介绍

这期内容当中小编将会给大家带来有关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()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。

rand()与将srand()函数怎么在c++中使用