Python 和 R 编码给出不同的结果

问题描述

我正在将 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 generatorPython's random number generator 都是默认的 Mersenne Twister,但底层实现是 demonstratively different

因为随机数生成依赖于一些底层实现,R is not even consistent across versionsPython technically isn't either 因为,在 Python2.3 之前,它使用了不同的随机数生成器,但所有当前支持的 Python 版本都是一致的。