在一定范围内C++生成随机数
random number generation in C++ within a range
我有一个问题,我必须使用以下条件
生成随机数 1( 数字应该是黑白 0 和 1。
2(数字以同样可能的方式产生
假设我有一个数字 x,例如 0.0028。如果我调用这个随机数生成器 10000 次,那么它应该产生小于 x 的数字为 28。如何实现这一点。有人知道吗?我尝试使用各种发行版,但没有成功达到预期的结果。
您正在寻找的是均匀分布随机数生成器。这是C++文档中的示例:
编辑:链接到包含另一个示例的cpp首选项。
它产生了我理解您需要的结果,但问题中的更多详细信息会有很大帮助。
// uniform_real_distribution
#include <iostream>
#include <random>
int main()
{
const int nrolls=10000; // number of experiments
const int nstars=95; // maximum number of stars to distribute
const int nintervals=10; // number of intervals
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);
int p[nintervals]={};
for (int i=0; i<nrolls; ++i) {
double number = distribution(generator);
++p[int(nintervals*number)];
}
std::cout << "uniform_real_distribution (0.0,1.0):" << std::endl;
std::cout << std::fixed; std::cout.precision(1);
for (int i=0; i<nintervals; ++i) {
std::cout << float(i)/nintervals << "-" << float(i+1)/nintervals << ": ";
std::cout << std::string(p[i]*nstars/nrolls,'*') << std::endl;
}
return 0;
}
你对随机数生成概念的假设有点错误。随机数生成器算法旨在确保在其指定范围内选择任何数字的机会几乎相等。但是,它们从不保证在其生成的所有数字序列中提供均匀分布。 在这里,您也没有指定生成的随机数的类型。如果它是双倍的,由于可能的数字范围很大,它可能会产生一些不准确之处。也许尝试使用随机整数可以可以接受地解决您的问题。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在个人计算机和群集 (c++) 上生成相同的随机数