直接播种CPython的Mersenne Twister

时间:2019-05-04 11:11:20

标签: python cpython

CPython的random标准模块实现的基础PRNG是在Modules/_randommodule.c中实现的Mersenne Twister。读取源代码后,似乎似乎先调用random.seed会调用该源文件中定义的init_by_array,然后依次调用init_genrand。我想知道是否有某种方法可以绕过对init_by_array的调用,而从Python代码中直接调用带有特定种子的init_genrand(或者给定所需种子,构造一个Python对象,该对象可以传递给random.seed,这样init_genrand就会被该种子调用)。

我这样做的动机是,在提供特定种子之后,我想通过将其输出与random.getrandbits的输出进行比较来测试自己的Mersenne Twister实现。

0 个答案:

没有答案