C++怎么产生随机数?还有产生一定范围的随机数
#include<iostream>
#include<random>
intmain(){
std::random_devicerd;//GetarandomseedfromtheOSentropydevice,orwhatever
std::mt19937_64eng(rd());//Usethe64-bitMersenneTwister19937generator
//andseeditwithentropy.
//Definethedistribution,bydefaultitgoesfrom0toMAX(unsignedlonglong)
//orwhathaveyou.
std::uniform_int_distribution<unsignedlonglong>distr;
//Generaterandomnumbers
for(intn=0;n<40;n++){
std::cout<<distr(eng)<<'';
}
std::cout<<std::endl;
}
扩展资料
C++生成随机数数组
#include<iostream>
#include<ctime>
#include<cassert>
usingnamespacestd
int*generateRandomArray(intn,intrangeL,intrangeR)
{
assert(rangeL<=rangeR);
int*arr=newint[n];
srand(time(NULL));
for(inti=0;i<n;i++)
{
arr[i]=rand()%(rangeR-rangeL+1)+rangeL;
}
returnarr;
}
使用方法像这个样子:
boost::random::mt19937 gen;//选个随机数发生器,mt19937负责产生32位以内的正整数
boost::random::uniform_int_distribution<> dist(1, 6);//定义一个均匀分布的模型,产生1-6之间的整数
定义好了,用的时候只要调用dist(gen)即可得到你想要的那个区间的数值
你还可以产生离散分布的随机数、正态分布等等很多。
选用不同的发生器可产生整数、小数、大到无耻的随机数(10^171)、斐波那契数列等等30几种发生器
20几种分布方案供选择
你喜欢还可以自己往里加。总之,就是个专为随机数而生。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int r(int fanwei)
{
srand((unsigned)time(NULL)); //用于保证是随机数
return rand()%fanwei; //用rand产生随机数并设定范围
}
int main()
{
cout<<r(100)<<endl; //生成100以内的随机数,并显示
return 0;
}
#include <stdlib.h>
#include <time.h>
//产生 [a,b) 区间的随机数
#define RANDOM(a,b) (rand()%((b)-(a)) + (a))
int main()
{
int i=0;
//用当前时间初始化随机数种子
srand( (unsigned)time(NULL) );
for( i=0; i<10; ++i )
printf( "%d ", RANDOM(0,5) );
}
#include<time.h>
#include<stdlib.h>
#define N 0
#define M 100
int main(){
srand((int)time(0)); //生成随机数种子
int R = M - N + 1; //计算生成随机数的范围
int r = rand() % R + N;
printf( "%d\n", r );
}