C++当中随机数的产生

来源:互联网 发布:淘宝的选购热点 编辑:程序博客网 时间:2024/04/30 05:44

在编程当中我们时常需要产生一些随机数,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; }}
就会发现,每次试验的随机数的结果变得不同了。

0 0
原创粉丝点击