C/C++随机数rand()和种子函数srand()

在计算机编程中,常常要产生一个随机数。但是要让计算机产生一个随机数并不那么容易。计算机的执行,是以代码来进行的,所以并不可能像抽牌,扔骰子那样产生一个真正具有随机意义的数。只可能以一定的算法产生一个伪随机数,C/C++提供了一个函数,放在cstdlib中,叫做rand(),原型为:int rand(void);。

显然,这个函数不接受任何参数,它的作用是:产生一个[0..RAND_MAX]之间的随机数。RAND_MAX也存放在cstdlib中,是一个宏常量:

   #define RAND_MAX Ox7FFF

RAND_MAX最大是,默认是。但是总不可能每改一次范围,都将常量修改。所以一般都这样使用:

   rand()%max    //这个表达式会生成[0..max-1]之间的随机数

这个函数并不可以凭空产生随机数,而是需要一个随机数种子。这个种子由同样存放在cstdlib中的srand函数提供,原型为:void srand(unsigned seed);。当你使用rand()但是没有提前产生一个种子时,默认情况下初始化种子值为1。

时间: 2024-08-05 06:40:36

C/C++随机数rand()和种子函数srand()的相关文章

srand()、rand()、time()函数的用法

srand()就是给rand()提供种子seed. 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的. 以一个固定的数值作为种子是一个缺点.通常的做法是 :以这样一句srand((unsigned) time(NULL));来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了.详细用法如下: 1 #include <iostream> 2 #include <stdlib.h> 3 #include <time.h> 4

C/C++中产生随机数(rand,srand用法)

计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了.) 我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,

[转]C++/C中产生随机数(rand,srand用法)

参考原文地址:https://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生的每个小序列都有一个初始值,即随机种子(即根据某一个初始值代入某个公式产生一系列值),注意:小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后,它们又会重复出现. 我们知道rand()函数可以用来产生随机数,但这不是真正意义上

C++中rand()函数的用法

C++中rand()函数的用法   2011-12-30 11:03:59|  分类: C / C++|举报|字号 订阅 一.C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过.但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数. 可改用C++下的rand函数来实现. 1.C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数. RAND_MAX必须至少为

神奇的随机数rand()

随机数在统计理论中占有很重要的地位,很多应用都需要用到他,系统自带的rand()函数产生的是伪随机数,所以该如何真正的随机数呢? 1.c语言中的时间函数 关于c语言我查到的两个比较好的博文是:http://blog.sina.com.cn/s/blog_686d0fb001012o3x.html http://blog.csdn.net/wangluojisuan/article/details/7045592/ 里面写的很是详细,但是我想通过一个例子来说明感觉比较好.常用的也就这几个. cha

rand()与 srand()

一   头文件 <time.h> srand()就是给rand()提供种子seed. 在C语言中,srand()与rand()是随机函数,其中srand函数是伪随机数发生器的初始化函数,原型void srand(unsigned int seed);rand()是伪随机数生成器,在调用了srand()产生的种子以后,产生伪随机数. C语言中语句srand( (time(NULL) ) ; 表示设置一个随机种子,每次运行都能保证随机种子不同. 在C语言中,rand()函数可以用来产生随机数,但是

【编程开发】C语言中随机数rand使用注意事项

[编程开发]C语言中随机数rand使用注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:随机数在编程开发中非常重要,以C语言中的rand函数为例,使用时需要注意随机数的随机体现在哪里,比如是程序在不同的时刻执行时,相同位置的随机数是否需要一样,还是要每次执行生成的随机数也要不一样,等等,这些都是需要加以关注的地方. 经测试,发现,在不使用srand这个随机数种子的情况下:每次运行生成的随机数都是一样的.有的时候是需要这样子的,当然可以直接使

PHP---------生成随机数,日期时间函数

常用函数 1.生成随机数 rand(); 生成随机数,不能控制在范围之内: echo rand(); 例题: 显示结果: 生成随机数,控制在范围之内: echo rand(最小值,最大值); 例题: 显示结果: 2.关于日期时间函数 var_dump(time());   // 取当前时间的UNIX时间戳: 显示结果: echo date("Y-m-d H:i:s",time()); //格式化日期时间戳  time()可以是任意一个时间戳 例题: 显示结果: echo date(&q

PHP的函数-----生成随机数、日期时间函数

常用的函数 [1]   生成随机数 rand(); 例子: echo rand(); 显示结果: 当刷新时,会有不同的数,默认生成随机数.生成随机数不能控制范围. 如果,想要控制在范围之内,就用: echo rand(最小值,最大值); //两个参数来确定随机数的范围 例子: 生成的随机数控制在1到10之间? echo rand(1,10); 显示结果: 生成随机的数就是1到10之间,不可能出现10以外的数. 如果只写一个参数: 例子: echo rand(9); 显示结果: rand()方法,