在本文中,我们将介绍如何使用Numpy访问默认的全局随机数生成器。随机数生成器是计算机科学中的一个重要概念,它允许我们在处理数据时随机抽样或者生成一些随机变量。
Numpy是一个专业的数学库,提供了一些强大的随机数生成器。但是我们可能需要使用默认的全局随机数生成器,以及对这个生成器的一些配置。下面,我们将介绍几个基本的命令来访问全局随机数生成器。
Numpy如何访问默认的全局随机数生成器
阅读更多:Numpy 教程
numpy.random模块
要使用Numpy随机数生成器,我们需要先导入numpy.random模块。该模块包含了所有的随机生成器函数,以及一些其他有用的工具函数。
import numpy as np
from numpy.random import default_rng
我们可以通过上面这段代码来导入numpy和default_rng。default_rng是一个类,实例化后可以用于生成各种分布的随机样本。
设置全局随机生成器
默认情况下,Numpy使用MT19937算法作为全局的随机数生成器。但我们可以通过set_default_rng函数来设置自己喜欢的生成器。以下是一些示例代码:
import numpy as np
from numpy.random import MT19937, RandomState, SeedSequence
# set default RNG
rs = RandomState(MT19937(SeedSequence(123456789)))
np.random.default_rng(rs)
# generate some random number
a = np.random.randn(10)
print(a)
上述代码中,我们使用了一个SeedSequence来初始化一个RandomState实例。这个SeedSequence可以是任何一个可以转化为byte的对象,它可以帮助我们生成一个确定的随机序列。
生成随机数
我们可以使用default_rng来生成各种分布的随机样本,这个函数接受可选的size参数,控制生成样本的大小。下面是一些常用的分布类型:
import numpy as np
from numpy.random import default_rng
# generate normal distribution
rng = default_rng()
a = rng.normal(size=10)
print(a)
# generate uniform distribution
b = rng.uniform(size=(3,2))
print(b)
# generate Poisson distribution
c = rng.poisson(5, size=(2,2))
print(c)
我们可以通过上述代码分别生成正态分布、均匀分布和泊松分布的样本。
随机状态
随机数生成器是有状态的,因此我们可以使用get_state和set_state函数来获取或设置随机数生成器的状态。状态包含了当前的随机数序列和其他一些元信息。下面是一些示例代码:
import numpy as np
from numpy.random import default_rng
# initialize default RNG
rng = default_rng()
# get_state
state = rng.get_state()
print(state)
# generate some random numbers
a = rng.randint(0, 100, size=10)
print(a)
# set_state
new_state = rng.get_state()
rng.set_state(state)
# generate same random numbers
b = rng.randint(0, 100, size=10)
print(b)
# reset state
rng.set_state(new_state)
# generate new random numbers
c = rng.randint(0, 100, size=10)
print(c)
上述代码中,我们首先使用get_state函数获取了原来的随机生成器状态。然后我们生成了一些随机数,接着我们设置了一个新状态,并使用set_state函数将状态恢复到原来的状态,最后我们又使用get_state函数来获取了新状态,生成了一些随机数。
总结
本文中,我们介绍了如何使用Numpy访问默认的全局随机数生成器。我们可以使用numpy.random模块来生成各种分布的随机数样本,也可以使用set_default_rng函数来设置自己喜欢的随机数生成器。而且,我们还可以通过get_state和set_state函数来获取或设置随机数生成器的状态。
在实际应用中,随机数生成器可以被用在各种场合,例如在模拟和推断中生成随机样本,或者在深度学习中初始化神经网络的权重。因此,对Numpy随机数生成器的掌握是非常有帮助的。
最后,我们鼓励读者多使用Numpy随机数生成器,并在实践中不断学习和探索,从而更好地理解随机数生成器在科学计算中的应用。
极客教程