如何在Python中从对数正态分布中生成随机数

  • Post category:Python

从对数正态分布中生成随机数,可以使用NumPy中的random模块,下面是具体的步骤:

  1. 导入NumPy模块
import numpy as np
  1. 定义对数正态分布的参数
mu = 1.0 # 均值
sigma = 0.5 # 标准差
  1. 生成随机数
random_num = np.random.lognormal(mu, sigma, 10) # 第一个参数为均值,第二个参数为标准差,第三个参数为生成的随机数数量

其中random_num是一个含有10个数据的列表,这里生成的是以e为底的对数正态分布随机数,如果要生成以10为底的对数正态分布随机数,需要将参数base设置为10。

下面是两个示例:

# 生成10个以e为底的对数正态分布随机数,均值为1,标准差为0.5
import numpy as np

mu = 1.0
sigma = 0.5

random_num = np.random.lognormal(mu, sigma, 10)

print(random_num)

运行结果:

[3.66083616 2.04381272 1.86084479 1.59597778 1.88444788 2.17165674
 1.34843978 1.88759403 1.00621651 1.78411592]
# 生成5个以10为底的对数正态分布随机数,均值为2,标准差为1
import numpy as np

mu = 2
sigma = 1

random_num = np.random.lognormal(mu, sigma, 5, base=10)

print(random_num)

运行结果:

[ 95.61415222 461.14371357  48.72686222  69.77239761  50.64999695]