【发布时间】:2014-04-23 23:23:59
【问题描述】:
假设我有一组数字 x = {0, 0, 0, 0, 1, 2, 2, 3}。有没有办法让我使用 rand() 从这个列表中打印出随机数,以便随着时间的推移生成的数字的比例实际上是集合中数字的原始比例?换言之,0 的比例约为 0.5,1 为 0.125,2 为 0.25,3 为 0.125。
【问题讨论】:
-
是的,这是可能的。现在出去做吧! :)
-
将它们放入
std::vector并在其上使用std::shuffle。然后按打乱顺序使用它们。 -
你要的是一个发行版,去看看en.cppreference.com/w/cpp/numeric/random
-
只要 N 足够大,任何体面的伪随机数生成器都可以做到这一点。你能说得更具体点吗?