c/c++ 随机函数 产生伪随机数
使用ANSI C库函数的rand和srand函数可以实现随机数的产生。使用头文件<stdlib.h>
随机数的产生以一个数字开始,应用一系列数学操作,产生一个与之没有明显联系的数字,但这样的数字都是以有限的方式依赖于前面的数字,更适合成为伪随机数。伪随机数序列的首个数字成为该序列的种子(seed)。
rand函数:
int rand(void); //直接返回一个[0,INT_MAX)之间的整数数,其使用的是固定的seed(1),所以每次调用产生的随机数序列是相同的
如果需要每次都产生不一样的随机数序列,需要使得每次的seed不同,可以先使用srand函数赋予seed值:
void srand(unsigned seed);
常用<ctimo.h>中的 time_t time(NULL)来产生种子,time_t是(unsigned int)类型,time(NULL)返回的是从1970年1月1日零时(GMT,国际标准时)起逝去的秒数,因此可以每次为srand提供不同的起点。
如果需要产生范围为[0,n)的随机整数,使用: rand()%n;
如果需要产生范围为[a,b)的随机整数,使用: rand()%(b-a)+ a;
如果需要产生范围为[0,1)的随机浮点数,使用: rand()/(double)INT_MAX;
部分代码如下:
#include <stdlib.h> #include <ctime> ... srand(unsigned int)(time(NULL)); int ranA = rand()%1000; //产生0-999的随机数 int ranB = rand()%(1000-300)+300; //产生300-999的随机数 int ranC = rand()/(double)INT_MAX * 5; //产生0-5之间的随机浮点数
本文参考:数据结构与程序设计 第4章 Niino的C++传说
- 上一篇 »Linux中使用随机数
- 下一篇 »JavaScript中获取随机数