问题描述
我正在将 R 脚本翻译成 Python,但是,我发现 Python 和 R 之间的编码结果不同。
在 R 中:
> digest('0003bf82df1e0255a352b89d431a831d_NA',algo='xxhash32')
[1] "d6865d43"
在 Python 中:
>>> xxhash.xxh32('0003bf82df1e0255a352b89d431a831d_NA').hexdigest()
'3c0493fd
它们都使用相同的算法,并且都使用默认的 seed = 0
。但为什么会发生这种情况?
任何帮助将不胜感激!
解决方法
seed=0 只会在重复实例上传递给相同的随机数生成器时给出相同的值流。
将 seed=0 传递给两个不同的随机数生成器会产生不同的价值流。
虽然 R's random number generator 和 Python's random number generator 都是默认的 Mersenne Twister,但底层实现是 demonstratively different。
因为随机数生成依赖于一些底层实现,R is not even consistent across versions。 Python technically isn't either 因为,在 Python2.3 之前,它使用了不同的随机数生成器,但所有当前支持的 Python 版本都是一致的。