首页 > 解决方案 > Python 和 R 编码给出不同的结果

问题描述

我正在将 R 脚本翻译成 Python,但是,我发现 Python 和 R 之间的编码结果不同。

在 R 中:

> digest('0003bf82df1e0255a352b89d431a831d_NA', algo='xxhash32')
[1] "d6865d43"

在 Python 中:

>>> xxhash.xxh32('0003bf82df1e0255a352b89d431a831d_NA').hexdigest()
'3c0493fd

他们都使用相同的算法,并且都使用默认的seed = 0. 但是为什么会这样呢?

任何帮助,将不胜感激!

标签: pythonrencode

解决方案


当在重复实例上传递给相同的随机数生成器时,seed=0 只会给出相同的值流。

将 seed=0 传递给两个不同的随机数生成器将给出不同的值流。

虽然R 的随机数生成器Python 的随机数生成器在默认情况下都是Mersenne Twister,但其底层实现是明显不同的。

因为随机数生成依赖于一些底层实现,所以 R 甚至在各个版本之间都不一致Python 在技术上也不是,因为在 Python2.3 之前,它使用了不同的随机数生成器,但所有当前支持的 Python 版本都是一致的。


推荐阅读