c++ - 如何在c ++中获取特定间隔内的随机数
问题描述
我需要特定间隔之间的数字。
# include<iostream>
# include<cstdlib>
# include<ctime>
using namespace std;
int main()
{
srand(time(0));
for (int x = 1; x<=10; x++)
{
cout<< 15+ (rand()% 20) <<endl;
}
}
我预计输出在 15 到 20 之间,如 [15,20],但我总是得到输出 > 或 <,而不是在确切的间隔内。
解决方案
自该语言的 2011 版本以来,有一个名为 的类std::uniform_int_distribution
,但我认为它不适用于rand()
,因此您必须使用新的伪随机生成器之一,例如std::mt19937
:
# include<random>
# include<iostream>
# include<ctime>
using namespace std;
int main()
{
uniform_int_distribution<> dis(15, 20);
mt19937 gen(time(0));
for (int x = 1; x<=10; x++)
{
cout<< dis(gen) <<endl;
}
}
推荐阅读
- javascript - Javascript 对象 - 过滤时,我的对象的键成为有序数字列表
- python - 添加一个方法,允许使用元组作为输入而不是点来修改圆类实例的中心
- ios - TIC TCP 连接失败 [4:0x604000360300]:1:61 Err(61) <1> HTTP 加载失败(错误代码:-1004
- python - Django 无法上传多个文件并且 request.FILES 似乎为空
- python - tf.metrics.auc 产生的结果与 sklearn.metrics.roc_auc_score 非常不同
- laravel - 如何在 laravel 5.6 中回显选定的单选值
- signalr - HubCallerContext 中的 SignalR 缺少连接
- ios - 显示位置 Swift3
- azure - 我可以使用服务连接将 VSTS 连接到多个 Azure 帐户吗?
- java - Android 错误“IF”和“ELSE”