您的位置:首页 > 编程语言 > C语言/C++

C++当中随机数的产生

2015-07-04 16:17 393 查看
在编程当中我们时常需要产生一些随机数,C++当中随机数的产生主要依靠两个函数rand和srand,下面谈谈这两个函数及其用法。

1. rand()

rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.hrand()产生的实际上是伪随机数,例如如下代码:

#include "stdafx.h"#include#include "ctime"using namespace std;int _tmain(int argc, _TCHAR* argv[]){for (int i = 0; i < 10; i++){ cout << rand() << endl;}system("Pause");return 0;}
产生的结果:表面上看好像产生了10个随机数,但是多试验几次就会发现,始终三这几个数。如果要产生一定范围内的随机数的话可以直接采用取余运算即可,例如产生10~20的随机数可以这样:10+rand()%10;如果要产生小数的话,可以采用先取余再除的方法,例如:(rand()%1001)/1000.02.srand()srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1
,进而导致rand()所产生的随机数值都一样。通常可以利用time(0)的返回值来当做seed,time()定义在ctime当中。如果采用以下代码:#include#includeusing namespace std;int main(){ srand(time(0)); for(int i=0;i<10;i++) { //产生10以内的整数 cout<<rand()%10<<endl; }}

就会发现,每次试验的随机数的结果变得不同了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: