C语言随机函数的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41276332/article/details/78737326

rand()和srand()应该是初学者最先接触到的随机函数了,今天博主就这两个函数陈述一下自己的理解。
这两个函数的使用规范如下:

/*这是一个模拟掷色子1800次的程序*/
#include <stdlib.h>
#include <time.h>
int main() 
{   int i;
    srand((unsigned)time(0)); 
    for (i=0;i<1800;i++)   printf("%d\n",rand()%6+1);
    return 0; 
}

运行结果如下:
运行结果如下:
根据百度百科,库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
函数一:int rand(void);
返回一个[0,RAND_MAX]间的随机整数。
函数二:void srand(unsigned seed);
参数seed是srand()的种子,用来初始化srand()的起始值。

系统在调用rand()之前都会自动调用srand(),如果在srand()里给参数seed指定了一个值(这里指定的值是当前时间),那么 rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始值,如果初始值是此时的1或是其他定值,那么每次rand()产生的随机数序列都是一样的,这也就是所谓的“伪随机数”。
值得注意的是,如果srand()括号中没有argument的话,程序是会报错的,因为在函数原型中,srand()函数是要求加上内容的。

简而言之,即有如下点:

  1. rand()函数可以生成一个[0,RAND_MAX]间的随机整数;(ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。)
  2. srand()可以被认为是为rand()的“伪随机数”的结果指定一个固定的序列,若未引用srand()函数,则程序默认srand()括号中的值为1;如果引用的话,srand()括号中不能为空;
  3. 为了确保生成的随机数为尽可能符合概率上的随机,需要调用一个函数time()(是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型),这个函数包含在头文件time.h里,在生成随机数的调用下需强制类型转换为(unsigned)time(),后面一个括号中必须填入(unsigned)time(NULL)或(unsigned)time(0)。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41276332/article/details/78737326

rand()和srand()应该是初学者最先接触到的随机函数了,今天博主就这两个函数陈述一下自己的理解。
这两个函数的使用规范如下:

猜你喜欢

转载自blog.csdn.net/fireflylane/article/details/83660791