编辑:事实证明,我在 C 版本的测试代码中输入了种子值(这与我在这个问题中粘贴的不同),所以我得到了不同的输出。感谢大家。
我需要在 C 程序中生成伪随机数,然后稍后将种子传递给 Python 程序并生成相同的数字。
PRNG 是我考虑过的东西,所以我查找了一个实现(在 C 中):
static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % 32768);
}
还有一个幼稚的端口:
next = 1
def myrand():
global next
next = next * 1103515245 + 12345
return (next / 65536) % 32768
但是,它们都产生不同的值。我猜next
在 C 实现中会溢出,这就是为什么这两个函数会产生不同的值。但是在 Python 中,数字没有明确的类型,它们不会溢出,也不是无符号的。如何在 Python 中复制这种行为?
提前致谢。