rand函数的用法

  • Post author:
  • Post category:其他


rand()函数可以用来产生随机数,但这并不是真正意义上的随机数,而是伪随机数。是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。

1.rand()

功能:随机数发生器

用法:int rand(void)

所在的头文件:stdlib.h


rand()函数产生的伪随机数字,每次执行时是相同的,若要不同,可用srand()函数初始化。

2.srand()

功能:初始化随机数发生器

用法: void srand(unsigned int seed)

所在头文件: stdlib.h

srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

3.使用当前时钟作为随机数种子 (时钟所在头文件为 time.h)

rand()产生的随机数在每次运行的时候都是与上一次相同的。若要不同,用函数srand()初始化它。可以利用srand((unsigned int)(time(NULL))的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。

4.产生随机数的用法

  1. 给srand()提供一个种子,它是一个unsigned int类型;

  1. 调用rand(),它会根据提供给srand()的种子值返回一个随机数;

  1. 根据需要多次调用rand(),从而不间断地得到新的随机数;

例如:

#include <stdio.h>

#include <stdlib.h>

intmain()

{

intnumber;

for (inti=0; i<5; i++)

{

number=rand() %10;

printf(“%d\n”, number);

}

return0;

}

  1. 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

例如:运用时钟做为随机数的种子

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

intmain()

{

intnumber;

srand((unsigned)time (NULL));

number=rand() %10; //取0~9之间的数

printf(“%d”, number);

return0;

}

5.

5.产生一定范围随机数的通用表示公式

通用公式:int num = rand() % n +a;其中在随机数的范围中a是起始值,n-1+a是终止值,n是整数的范围。

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;



版权声明:本文为weixin_73754083原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。