gpt4 book ai didi

python seed() 不保持相同的顺序

转载 作者:太空狗 更新时间:2023-10-30 00:28:04 27 4
gpt4 key购买 nike

我正在使用 random.seed() 来尝试保持 random.sample() 与我从列表中采样更多值相同,并且在某些时候数字会发生变化......我认为那个seed() 函数的目的是保持数字相同。

这是我所做的一项测试,以证明它不会保留相同的数字。

import random

a=range(0,100)
random.seed(1)
a = random.sample(a,10)
print a

然后将样本调得更高,顺序就会改变(至少对我来说他们总是这样):

a = random.sample(a,40)
print a

我是个新手,所以也许这是一个简单的解决方法,但我将不胜感激。谢谢!

最佳答案

如果您要从生成器中抽取独立样本,将会发生什么,这正是您所期望的:

In [1]: import random

In [2]: random.seed(1)

In [3]: [random.randint(0, 99) for _ in range(10)]
Out[3]: [13, 84, 76, 25, 49, 44, 65, 78, 9, 2]

In [4]: random.seed(1)

In [5]: [random.randint(0, 99) for _ in range(40)]
Out[5]: [13, 84, 76, 25, 49, 44, 65, 78, 9, 2, 83, 43 ...]

如你所见,前十个数字确实相同。

事实上,random.sample() 正在绘制样本没有替换,这是阻碍。要了解这些算法的工作原理,请参阅 Reservoir Sampling .从本质上讲,较晚 的样本可以将较早 的样本推出结果集。

一种替代方法可能是打乱索引列表,然后取 10 个或 40 个第一个元素:

In [1]: import random

In [2]: a = range(0,100)

In [3]: random.shuffle(a)

In [4]: a[:10]
Out[4]: [48, 27, 28, 4, 67, 76, 98, 68, 35, 80]

In [5]: a[:40]
Out[5]: [48, 27, 28, 4, 67, 76, 98, 68, 35, 80, ...]

关于python seed() 不保持相同的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com