python 随机数为什么在所有计算机上都不一样
python random number why isn't it same on all computers
一位与我没有任何联系的朋友曾经告诉我以下内容:
Using that library(python's random) you can select a seed If you give it at seed it
means the randomly generated number will always be the same No matter
what computer you run it on
所以我试着测试一下,因为这是我需要的,所以它在所有计算机上都是一样的,每次有人调用它时(这很重要,因为我正在研究区块链 NFT,信任在这里很重要)
所以我发现了这个:https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/
关于link,有一个例子:
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())
运行上面在python的游乐场,我得到
(0.417022004703, 0.720324493442, 0.000114374817345) (0.417022004703,
0.720324493442, 0.000114374817345)
但是正如您所见,在该网站上,post 的创建者得到了以下信息:
0.13436424411240122 0.8474337369372327 0.763774618976614
0.13436424411240122 0.8474337369372327 0.763774618976614
为什么它们在所有计算机上都不相同?我正在使用相同的种子。以及如何确保它们相同?
答案是,即使您标记了 Python-3.x,您实际上使用的是 Python 2,并且随机数算法在 2 和 3 之间变化。
我可以这么说,因为您的 print
语句将值打印为元组,并带有括号。 Python 3 的打印功能不会发生这种情况。
出于财务目的依赖随机数算法的特定实现是很奇怪的。如果你真的需要再现性,那么你应该嵌入你自己的算法。有几个 RNG 并不难编码。但如果算法需要可预测,为什么不使用递增的数字呢?如果不需要随机性,那就不要用随机性。
我在 Python 2.3.0(超过 18 岁)和 Python 3.10(最新的,只有一个月大)中都得到了 post 作者的值。
如果我使用 numpy.random
而不是 Python 的 random
.
,我会得到 你的 值
所以我怀疑您没有说出关于您的代码的真相,或者您使用的 "python" 游乐场很奇怪。
一位与我没有任何联系的朋友曾经告诉我以下内容:
Using that library(python's random) you can select a seed If you give it at seed it means the randomly generated number will always be the same No matter what computer you run it on
所以我试着测试一下,因为这是我需要的,所以它在所有计算机上都是一样的,每次有人调用它时(这很重要,因为我正在研究区块链 NFT,信任在这里很重要)
所以我发现了这个:https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/
关于link,有一个例子:
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())
运行上面在python的游乐场,我得到
(0.417022004703, 0.720324493442, 0.000114374817345) (0.417022004703, 0.720324493442, 0.000114374817345)
但是正如您所见,在该网站上,post 的创建者得到了以下信息:
0.13436424411240122 0.8474337369372327 0.763774618976614 0.13436424411240122 0.8474337369372327 0.763774618976614
为什么它们在所有计算机上都不相同?我正在使用相同的种子。以及如何确保它们相同?
答案是,即使您标记了 Python-3.x,您实际上使用的是 Python 2,并且随机数算法在 2 和 3 之间变化。
我可以这么说,因为您的 print
语句将值打印为元组,并带有括号。 Python 3 的打印功能不会发生这种情况。
出于财务目的依赖随机数算法的特定实现是很奇怪的。如果你真的需要再现性,那么你应该嵌入你自己的算法。有几个 RNG 并不难编码。但如果算法需要可预测,为什么不使用递增的数字呢?如果不需要随机性,那就不要用随机性。
我在 Python 2.3.0(超过 18 岁)和 Python 3.10(最新的,只有一个月大)中都得到了 post 作者的值。
如果我使用 numpy.random
而不是 Python 的 random
.
所以我怀疑您没有说出关于您的代码的真相,或者您使用的 "python" 游乐场很奇怪。