【发布时间】:2016-02-18 19:02:14
【问题描述】:
unsigned const number = minimum + (rand() % (maximum - minimum + 1))
我知道如何(轻松地)生成一个范围内的随机数,例如从 0 到 100。但是来自int 的全范围 的随机数呢(假设 sizeof(int) == 4 ),即从INT_MIN 到INT_MAX,两者都包含?
对于密码学等,我不需要这个,但大致均匀的分布会很好,我需要 很多 这些数字。
我目前使用的方法是在 0 到 255(含)范围内生成 4 个随机数,并进行一些杂乱的转换和位操作。我想知道是否有更好的方法。
【问题讨论】:
-
不,但显然我的 google foo 缺少?如果这是直截了当的,那么请回答。
-
@DanielJour 他一整天都这样。
-
你做得很好:只注意负数。您不想对负数进行二元运算(或、异或和)。
-
@Olaf Pseudo random 对我来说没问题。
-
亲爱的反对者:请解释为什么你反对我。如果已经有关于 SO 的类似问题,请链接到它。 (我搜索了很多)