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

c++生成随机数

2018-03-23 18:42 288 查看

概述:

C++中没有自带的random函数,获取随机数可以使用rand()和srand()方法。不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随机的伪随机数。

rand:

rand()会返回一个0至RAND_MAX之间的随机数值,RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。

Srand:

srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。一般情况我们会使用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。需要调用time(),加入头文件< ctime >。

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<20;i++)
cout<<rand()<<' ';
return 0;
}


获取指定范围的随机数:

获取一定范围的随机数,其实也就是对rand()得到的随机数,求余操作。

取得[0,x)的随机整数:rand()%x;

取得[0,x]的随机整数:rand()%(x+1);

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

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

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

取得0-1之间的浮点数:rand()/double(RAND_MAX)。

#include<iostream>
#include<cstdlib>
#include<ctime>
#define randomInt(a,b) (rand()%(b-a+1)+a)
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<20;i++){
//求[1-100]之间的随机数
cout<<randomInt(1,100)<<' ';
}

return 0;
}


希望对您有所帮助!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: