因此,当使用例如rand(10)时,ruby如何生成随机数?我对随机数生成技术的了解很少,所以我想更好地了解它们。
答案 0 :(得分:2)
Ruby是open-source。我将演示如何定位PRNG(伪随机数生成器)代码,因为无法使用确定性CPU生成真正的随机数。
在存储库中,我们看到一个suspiciously-named file, random.c。在内部,它在C语言中,但是没关系,它带有注释。第一个函数是genrand_real,调用genrand_int32,它采用结构MT。此功能在mt19937.c中定义,然后查看该文件,它使用按位运算来获取随机数生成器的下一个状态,并应用更多按位运算符来生成所需的数字。