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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-31
前几位把常规方法都说了,我补充一种更前卫的方法。用Boost的Random库,专业随机数生成器哦亲~~~
使用方法像这个样子:
boost::random::mt19937 gen;//选个随机数发生器,mt19937负责产生32位以内的正整数
boost::random::uniform_int_distribution<> dist(1, 6);//定义一个均匀分布的模型,产生1-6之间的整数
定义好了,用的时候只要调用dist(gen)即可得到你想要的那个区间的数值

你还可以产生离散分布的随机数、正态分布等等很多。
选用不同的发生器可产生整数、小数、大到无耻的随机数(10^171)、斐波那契数列等等30几种发生器
20几种分布方案供选择

你喜欢还可以自己往里加。总之,就是个专为随机数而生。
第2个回答  推荐于2017-11-24
用rand()函数
#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;
}本回答被提问者采纳
第3个回答  2011-10-30
#include <stdio.h>
#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) );
}
第4个回答  2011-10-30
生成 从 N 到 M 的随机数。
#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 );
}