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; }}
就会发现,每次试验的随机数的结果变得不同了。
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; }}
就会发现,每次试验的随机数的结果变得不同了。
相关文章推荐
- C语言实现md5函数代码
- 【c语言】模拟实现库函数的atof函数
- C++ enum用法
- c语言函数参数问题学习
- 不使用加减乘除,求一个数的7倍
- C++ AfxBeginThread和AfxEndThread 使用方法
- 黑马程序员---C语言基础---循环控制
- C++ Primer学习笔记(9)——为什么要用内联函数
- C++中的浅拷贝和深拷贝
- 《C语言及程序设计》实践参考——区号查询
- 《C语言及程序设计》实践参考——玩转日期和时间
- 《C语言及程序设计》实践参考——学生成绩统计
- C++atoi与atof
- Introduce to algorithm-----pseudo code to C/C++ code (chapter 11)
- C语言中可变参数的用法
- C++ Primer学习笔记(8)——形参、局部变量、静态局部变量
- C++ 类的反汇编
- 《C语言及程序设计》实践项目——结构体应用
- 【c语言】 模拟实现库函数的atoi函数
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法 --转