【问题标题】:How to have multiple numpy random generating objects with different seeds t the same time如何同时拥有多个具有不同种子的numpy随机生成对象
【发布时间】:2021-03-26 14:11:08
【问题描述】:

为了描述我的意思,请考虑以下虚拟示例:

import numpy as np1
import numpy as np2

seed1 = 1
seed2 = 2

np1.random.seed(seed1)
np2.random.seed(seed2)

其中np1.random.normal(0, 2, 1) 完全返回一个值,而不管seed2 是什么。 (这在本例中当然行不通。

有没有这样的功能,有两个独立的随机生成对象?

【问题讨论】:

  • 是的,使用 np.random.RandomState stackoverflow.com/a/22995942/2285236 该示例使用 42 作为两个示例的种子,但您当然可以将其中一个设置为 1,另一个设置为 2。
  • 请注意,numpy.random.RandomState 是 NumPy 1.17 的遗留类。该版本引入了新的随机生成器系统以及 numpy.random.Generator。请参阅NumPy RNG policy
  • 最新的随机数包让您可以创建多个独立的随机数生成器。

标签: python numpy random random-seed seed


【解决方案1】:

使用最新版本,您可以制作多个随机生成器。请参阅文档。

为了说明,用相同的种子制作 2:

In [5]: r1 =np.random.default_rng(1)
In [6]: r2 =np.random.default_rng(1)

它们会生成相同的随机整数,而不会互相踩踏:

In [8]: r1.integers(0,10,5)
Out[8]: array([4, 5, 7, 9, 0])
In [9]: r2.integers(0,10,5)
Out[9]: array([4, 5, 7, 9, 0])

或更多r1序列:

In [10]: r1.integers(0,10,5)
Out[10]: array([1, 8, 9, 2, 3])
In [11]: r1.integers(0,10,5)
Out[11]: array([8, 4, 2, 8, 2])
In [12]: r1.integers(0,10,5)
Out[12]: array([4, 6, 5, 0, 0])

同Out[10]

In [13]: r2.integers(0,10,5)
Out[13]: array([1, 8, 9, 2, 3])

【讨论】:

  • 如果你能投票赞成我的问题,我会很高兴,这样我就不会被停职......
猜你喜欢
  • 1970-01-01
  • 2021-12-25
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
相关资源
最近更新 更多