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

C++生成随机数

2016-01-02 11:53 218 查看
      C/C++生成随机数需要用到rand()函数和srand()函数,C/C++内没有在一个范围内生成随机数的自带函数。

1.rand()函数

功能:随机发生器

所在头文件:stdlib.h

rand()返回随机数值的范围在0~RAND_MAX之间。0~RAND_MAX每个数字被选中的概率相同。

注:rand()产生的是伪随机数字,每次执行时的结果是相同的。Ctrl+Shift+F5时每次产生的结果是一样的。

#include <iostream>
#include"stdlib.h"
using namespace std;

int main()
{
double x;
x = rand();
x = x/RAND_MAX;
cout<<x<<endl;
return 1;
}


2.srand()函数

      为了避免每次生成固定的随机数,引进srand()函数。

功能:初始化随机数发生器

用法:srand(unsigned int seed)

所在头文件:stdlib.h

      srand()是用来设置rand()产生随机数时的随机种子。参数seed必须是整数,如果每次seed都设置相同的值,rand()所产生的随机数值每次也都一样。

注:要每次生成的随机数不一样,用srand()初始化,为了方便,可以利用srand((unsigned) time(NULL))的方法,产生不同的随机种子。



#include <iostream>
#include <time.h>
#include"stdlib.h"
using namespace std;

int main()
{
double x;
srand((unsigned)time(NULL)); //srand(3)
x = rand();
x = x/RAND_MAX;
cout<<x<<endl;
return 1;
}




3.在一定范围内生成随机数的通用公式

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文章:http://blog.sina.com.cn/s/blog_79ab4be10100uzrj.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: