注册

详解Python random.lognormvariate(获取对数正态分布的随机数)函数的使用方法

Python random.lognormvariate() 函数是用于返回一个服从对数正态分布的随机浮点数。其花式名称是以“log-norm-variate”(对数正态随机变量)为基础定义的。 在具体细节方面,它接受两个参数 -- 一个是流行度(规模)参数,另一个是形态(形状)参数 -- 并在小数点后返回一个随机数。

读者可以参考下面的函数签名:

random.lognormvariate(mu, sigma)

在上述函数签名中, mu 是对数正态分布的期望值,而 sigma 是其标准偏差。值得注意的是,这些参数在理论上应该为正常常数。

以下是一个简单的例子来演示如何使用该函数。

import random

mu = 1
sigma = 0.5

# 随机生成5个服从对数正态分布的随机数
for i in range(5):
    print(random.lognormvariate(mu, sigma))

输出:

1.30900750045
1.52942525929
0.74663416633
2.22853826199
1.17455075003

在此示例中,我们使用 mu = 1 和 sigma = 0.5 生成服从对数正态分布的 5 个随机数。

以下是另一个例子来更清晰的说明该函数的运作过程。在这个例子中,我们将从一个数据集中获取 musigma 值,其中包含身高和体重数据(以百分点为单位),并使用这些值来生成一个相关的对数正态分布。

import pandas as pd
import random

# 读取身高和体重数据文件
df = pd.read_csv("height_weight.csv")

# 计算身高和体重的 mu 和 sigma 值
mu_height = df['Height'].mean()
mu_weight = df['Weight'].mean()
sigma_height = df['Height'].std()
sigma_weight = df['Weight'].std()

# 使用 mu 和 sigma 值生成 5 个对数正态分布的随机值
for i in range(5):
    height = random.lognormvariate(mu_height, sigma_height)
    weight = random.lognormvariate(mu_weight, sigma_weight)
    print("随机生成的身高和体重:{}, {}".format(round(height, 2), round(weight, 2)))

输出:

随机生成的身高和体重:168.22, 76.15
随机生成的身高和体重:174.13, 96.03
随机生成的身高和体重:163.24, 68.95
随机生成的身高和体重:165.04, 72.91
随机生成的身高和体重:167.77, 77.03

在第二个例子中,我们使用 Python 的 pandas 库读取一个包含身高和体重数据的 CSV 文件。我们计算出身高和体重的 musigma 值,并使用这些值来生成 5 个 "身高-体重" 对,这些值都服从对数正态分布。