📜  Python中的 numpy.random.uniform()(1)

📅  最后修改于: 2023-12-03 15:04:33.732000             🧑  作者: Mango

Python中的 numpy.random.uniform()

numpy.random.uniform()是一个用于生成服从均匀分布的随机数的函数。

基本用法
numpy.random.uniform(low=0.0, high=1.0, size=None)

该函数可以接受三个参数:

  • low(可选):生成的随机数的最小值,默认为0.0。
  • high(必选):生成的随机数的最大值。
  • size(可选):指定生成的随机数的维度,默认为None,即只生成一个随机数。

以下是一个简单的示例:

import numpy as np

# 生成一个范围在[0, 1)之间的随机数
rand_num = np.random.uniform()
print(rand_num)

# 生成一个范围在[0, 5)之间的 1x3 数组
rand_array = np.random.uniform(low=0, high=5, size=(1, 3))
print(rand_array)

输出:

0.0736660131885517

[[3.9292683  1.43953193 1.46888307]]
生成指定分布的随机数

当我们想要生成服从其他分布的随机数时,可以先生成平均分布的随机数,再通过一些转换生成指定分布的随机数。

例如,要生成服从正态分布的随机数,可以使用以下代码:

# 生成服从正态分布的随机数
mu, sigma = 0, 0.1  # 均值和标准差
s = np.random.uniform(-1, 1, 100000)
x = np.mean(s)
y = np.sqrt(np.var(s))
z = [(i - x) / y for i in s]
norm_array = [i * sigma + mu for i in z]
print(norm_array)

注意:虽然我们可以使用 np.random.normal() 直接生成服从正态分布的随机数,但也可以使用 np.random.uniform() 结合一些数学技巧来生成需要的随机数,这种方式也可以用于生成其他类型的随机数。

随机数种子

在使用随机数时,为了让程序的可复现性更好,一般需要指定随机数种子。随机数种子是一个可以用于生成随机数的起点,如果两次生成随机数使用的是相同的随机数种子,那么他们就会得到相同的随机数。

以下是一个使用随机种子生成随机数的示例:

import numpy as np

np.random.seed(10)  # 生成随机数种子

# 第一次生成
rand_num_1 = np.random.uniform(low=0, high=1)
print(rand_num_1)

# 第二次生成,结果应该和前一次相同
np.random.seed(10)
rand_num_2 = np.random.uniform(low=0, high=1)
print(rand_num_2)

输出:

0.771320643266746

0.771320643266746
总结

numpy.random.uniform() 可以用于生成服从均匀分布的随机数,也可以结合一些数学技巧生成其他分布的随机数。在使用时,一般建议指定随机数种子,以提高程序的可复现性。