阅读Ruby Doc 2.3.0,其中说明了Ruby代码用于生成随机数的策略。
- openssl
- /dev/undom
- Win32
但是查看2.3.0 Source,我没有看到任何使用/dev/urandom
的迹象。
至少2.2.2具有/dev/urandom
逻辑。
如果我错了,请纠正我。我只是在帮助自己理解Ruby中是如何生成随机数的。
您必须查看Random.raw_seed
实现,它可以在random.c
中找到。
由于文档中没有提到这一点:在尝试读取/dev/urandom
之前,代码尝试在最新的Linux版本上调用getrandom(2)
(请参阅fill_random_bytes()
)。