Python 随机数为什么在所有计算机上都不相同



一个我不再有任何交流的朋友告诉我以下内容:

使用该库(python的随机(,您可以选择一个种子。如果您在种子时给它意味着随机生成的数字将始终相同你在哪台计算机上运行

所以我试着测试这个,因为这是我需要的,所以它在所有计算机上都是一样的,每次有人调用这个(这很重要,因为我正在开发区块链NFT,信任在这里很重要(

所以我发现:https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/

在这个链接上,有一个例子:

from random import seed
from random import random
# seed random number generator
seed(1)
# generate some random numbers
print(random(), random(), random())
# reset the seed
seed(1)
# generate some random numbers
print(random(), random(), random())

在蟒蛇的操场上跑,我得到了

(0.417022004703,0.7203244934420.000114374181345((0.4170220004703,,0.7203244934420.00011437481345(

但正如你所看到的,在该网站上,该帖子的创建者得到了以下信息:

0.133436424411240122 0.8474337369372327 0.7637746189766140.133436424411240122 0.8474337369372327 0.763774618976614

为什么它们在所有计算机上都不一样?我用的是同一颗种子。我怎样才能确保它们是一样的呢?

答案是,即使您标记了Python-3.x,但实际上您使用的是Python 2,随机数算法在2和3之间发生了变化。

我可以这么说,因为您的print语句将值打印为带括号的元组。Python 3的print函数不会出现这种情况。

出于财务目的而依赖随机数算法的特定实现是很奇怪的。如果你真的需要再现性,那么你应该嵌入你自己的算法。有几个RNG并不难编码。但是,如果算法需要是可预测的,为什么不使用递增的数字呢?如果你不需要随机性,那么就不要使用随机性。

我在Python 2.3.0(超过18年(和Python 3.10(最新的,只有一个月的历史(中都得到了后作者的值。

如果我使用numpy.random而不是Python的random,我会得到您的值。

所以我怀疑你没有说出你的代码的真相,或者"蟒蛇游乐场你用的很奇怪。

最新更新