【发布时间】:2016-01-08 17:42:42
【问题描述】:
我想生成一个用于游戏的随机布尔值,因此它不需要加密安全。我将在我的代码中使用stdbool.h,并且我也使用了#include <stdlib.h>。最好,它应该非常快(因为我将生成其中的许多),并且应该能够在 C89 中完成(只是偏好)。我对用 C++ 做这件事一点兴趣都没有。
以下是我想出的一些方法:
- 从 /dev/urandom 读取,过滤掉单个数字,>5 = true,
- 继续调用 rand() 并过滤掉低/高值。
【问题讨论】:
-
如果你调用
rand,你可以对结果执行% 2得到一个0或1。 -
> 5= true,< 5= false 意味着大多数时候你会得到 true,除非你从/dev/urandom流中只提取 3 位,那么你会得到 false 大多数时间