C++中介于20和30之间的真随机整数
True random integer between 20 and 30 in C++
如果这很明显,请原谅我,但我在生成范围内的真正随机整数的想法上遇到了一些麻烦,我刚刚开始使用C++。我当前的代码:
int start = rand() % 30 + 20;
总是得到31,因为这是一个"伪随机"整数。它也在30以上!真的随机数可以用这种方式实现吗?还有,我如何才能真正生成一个范围内的数字?
-Jai
普通计算机只能生成伪随机数,
但这并不意味着每次生成的数字都是相同的
你的问题是你忘记了srand
,无论哪种方式,兰特都不那么好,
并且公式应该是CCD_ 2。
有关比rand更好的生成器,请参阅Mersenne Twister(包括<random>
)
对于"真"随机数,您需要特殊的硬件。
在C++中,您可以执行以下操作:
#include <iostream>
#include <random>
#include <chrono>
class Rand_int {
public:
Rand_int(int low, int high)
: re(std::chrono::system_clock::now().time_since_epoch().count()),
dist{low,high} { }
int operator()() { return dist(re); }
private:
std::default_random_engine re;
std::uniform_int_distribution<> dist;
};
int main() {
Rand_int rnd {20, 30};
for (int i=0; i<10; i++)
std::cout << rnd() << 'n';
return 0;
}
相关文章:
- 对于C++随机访问迭代器(矢量迭代器),迭代器之间的差异是如何计算的?
- 尝试查找数组中点之间的最小距离时的随机垃圾输出
- 生成一组随机的 x,y,z 数,它们之间和定义的限制之间具有最小差异
- 从本地工作,但在执行之间的随机端口上没有收到任何内容
- 分布在-DBL_MAX和DBL_MAX之间的随机双打
- 在 C/C++ 中生成介于 2 个限制之间的随机素数
- 生成它们之间有差异的随机坐标
- 我(伪)如何随机生成数字0和1(不是之间)
- 随机选择一个 0 到 8 之间的数字,直到没有数字可以选择,然后重新开始
- C++ - 将 0 到 9 之间的整数设置为特征库矩阵的随机值
- C++中的变量之间随机
- 从隐藏在随机字符之间的文件中提取整数
- C++ 创建一个介于 0.1 和 10 之间的随机小数
- 如何在 c++ 中生成介于 0 和变量之间的随机双精度
- 是否有一个随机函数可以生成 0 到 1 之间的数字
- C++中介于20和30之间的真随机整数
- 从一个0到1之间的随机生成的数字中滚动两个骰子给定次数C++
- 在[0,1)之间随机生成
- 如何在C++中随机生成的应用程序中在数字之间留出空格
- 生成0到1之间的随机实数