C++怎么产生随机数?还有产生一定范围的随机数

 我来答
爱教育爱学习
高粉答主

2019-10-29 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112726

向TA提问 私信TA
展开全部

#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;

}

百度网友ecb9fde54
2011-10-31 · TA获得超过187个赞
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:55.3万
展开全部
前几位把常规方法都说了,我补充一种更前卫的方法。用Boost的Random库,专业随机数生成器哦亲~~~
使用方法像这个样子:
boost::random::mt19937 gen;//选个随机数发生器,mt19937负责产生32位以内的正整数
boost::random::uniform_int_distribution<> dist(1, 6);//定义一个均匀分布的模型,产生1-6之间的整数
定义好了,用的时候只要调用dist(gen)即可得到你想要的那个区间的数值

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

你喜欢还可以自己往里加。总之,就是个专为随机数而生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ng01
推荐于2017-11-24 · TA获得超过258个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:98万
展开全部
用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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
OGRobot
2011-10-30 · TA获得超过1516个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:608万
展开全部
#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) );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恭敬传承孔子孙I
2011-10-30
知道答主
回答量:32
采纳率:100%
帮助的人:32.8万
展开全部
生成 从 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 );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式