-2

将我的编辑放在这里:

在评论中,已经讨论了随机性的实际性质。我所理解的是,在生成“随机”数字时,没有任何数字比另一个数字更可能产生。

希望对我的问题更公平的表述是:

如果没有一个数字比另一个数字或多或少,那么,如果数字并不总是均匀分布,为什么均匀分布函数会自称呢?


在我问之前要清楚,我只是出于好奇而问。幸运的是我不是猫。

我为一个大学项目创建了一个快速排序功能,并认为也许(而不是仅仅敲击键盘一会儿)我可以用一些随机生成的整数列表来测试它。

std::vector<int> unsorted_list;
std::random_device ran_dev; // Initialise a new random device
std::uniform_int_distribution<> uni_dist(1, 100); // Create Uniform Distribution
for (int i = 0; i < 5; i++) {
    unsorted_list.push_back(uni_dist(ran_dev));
}

我可以完全依靠这个实现来产生看起来总是随机的(均匀分布)的随机数吗?

你可能会认为我很傻......显然,班级声明它是一个均匀分布,例如,不可能是非均匀分布......但是这些输出中的任何一个甚至可能吗?如果是这样,可能性有多大?

(1, 1, 1, 1, 1)
(1, 2, 3, 4, 5)
(2, 4, 6, 8, 10)

我想最后一个输出比第一个或第二个输出更有可能(尤其是在使用 0 到 100 的范围时),但我的好奇心仍然存在。
我是不是特别傻?我从来都不是擅长数学,所以,虽然我开始理解符号和术语,但我仍然会看一些解释,只是“呆呆地”,所以到目前为止我的谷歌搜索没有帮助。

4

1 回答 1

2

与包含大量重复的列表相比,您更有可能获得包含许多不同数字的列表。但是,如果使用时间足够长,真正的 RNG 将连续产生任意数量的 1,并且由于 PRNG 应该看起来像真正的 RNG,因此可能期望 PRNG 做同样的事情。

真正的 RNG 通常有独立的试验,这意味着一个试验的结果不会告诉你任何关于另一个试验的结果。知道连续出现 100 个 1 并不能告诉您这样的 RNG 在下一次试验中会做什么。由于 PRNG 看起来像 RNG,因此您可能期望它们也一样。

总之,虽然不太可能,但有可能获得大量重复。如果您不想重复,我建议您自己选择元素然后改组。这样,顺序是随机的,而元素具有您想要的任何分布,确切地说。

于 2017-11-22T23:25:58.933 回答