【发布时间】:2016-12-14 21:59:52
【问题描述】:
我正在尝试生成随机数并将它们填充到数组中的新方法。到目前为止,我已经完成了。
template<size_t SIZE>
void fill_array(array<int, SIZE>& a)
{
default_random_engine dre;
uniform_int_distribution<int> uid1(0, 1000);
for (int i = 0; i < a.size(); i++)
{
a[i] = uid1(dre);
}
}
我的主文件很简单,看起来像这样
array<int, 10> a;
Array3 a1;
a1.fill_array(a);
a1.print_array(a);
我以为我每次调试时都能得到随机数,但每次都得到相同的数字。很奇怪,有时我确实会得到不同的数字,但同样的事情是我必须多次调试才能获得新的数字。我做错了什么?
【问题讨论】:
-
如果您想要不确定的结果,请使用
std::random_device -
... 并初始化例如'std::mt19937',你在你的'std::uniform_int_distribution'中使用。
-
另外,您不需要编写循环来填充
std::array或任何序列容器。见std::generate -
谢谢,我会检查 std::generate 出来的。
-
为了记录,我承认我本可以更好地提出这个问题的事实。感谢您的帮助。