如何从标准柯西分布中创建相同的rnd数?

问题描述 投票:0回答:1

为了进行模拟,我需要一个柯西分布的随机数数组。可以通过功能轻松完成

random.standard_cauchy(N) 

现在我想生成完全相同的随机数序列。

我尝试过

seed(42)
print(random.standard_cauchy(10), random.standard_cauchy(10))

,但我无法正常工作。我得到的序列不同。

是否可以从标准柯西分布中生成相同的随机数序列?

python random
1个回答
0
投票

这是因为您需要“重置”序列。

您所做的就像print(random.standard_cauchy(20))

from numpy import random

random.seed(42)
print(random.standard_cauchy(10), random.standard_cauchy(10))
random.seed(42)
print(random.standard_cauchy(20))

编辑

由于print(random.standard_cauchy(10), random.standard_cauchy(10))您拨打一次random.standard_cauchy(10)并获得前十个号码,然后您拨打第二次random.standard_cauchy(10),则获得后十个号码。

所以就像print(random.standard_cauchy(20))

要打印2个相同编号的序列,您需要再次设置相同的种子值。当种子值固定时,序列“重新启动”。

from numpy import random :

random.seed(42)
print(random.standard_cauchy(10))
random.seed(42)
print(random.standard_cauchy(20))

您可以在for中执行此操作:

from numpy import random

for i in range (2):
    random.seed(42)
    print(random.standard_cauchy(10))

输出:

[-3.59249748  0.42526319  1.00007012  2.05778128 -0.8652948   0.99503562
 -0.12646463  3.06767933 -3.22303808  0.64293825]
[-3.59249748  0.42526319  1.00007012  2.05778128 -0.8652948   0.99503562
 -0.12646463  3.06767933 -3.22303808  0.64293825]

-1
投票

听起来合乎逻辑。

但是看起来我仍然不知道如何重设序列。我尝试过

seed(42)
print(random.standard_cauchy(10))
seed(42)
print(random.standard_cauchy(10))
seed(42)
print(random.standard_cauchy(20))

但是我又得到了不同的顺序。您能否举一个例子,说明如何两次创建以下序列

random.standard_cauchy(10)
© www.soinside.com 2019 - 2024. All rights reserved.