【发布时间】:2015-09-10 00:00:33
【问题描述】:
我现在不在乎效率。我只是在寻找一种可以生成从 0 到 10 亿的随机数的体面方法。我试过做 rand() * rand() 但它只给了我估计大于约 1000 万的数字。我希望范围更加分散。有人有什么建议吗?
【问题讨论】:
-
cplusplus.com/reference/random 比普通的
rand()要好。例如mt19937_64... -
MS VC++ 的 rand_s 范围为 0 到 UINT_MAX。
-
顺便说一句,即使
rand() * rand()足够大,结果也远不能均匀分布。 -
请记住,库函数返回伪随机序列,而不是真正的随机数。对于后者,需要某种硬件设备。对于大多数用途(如娱乐游戏)来说,这是一个很小的区别,但是当在线扑克等有钱时,它是一个完全不同的游戏。见this。