Python - AI 助手

Python random.lognormvariate() 方法



Python 中的 **random.lognormvariate()** 方法生成遵循对数正态 (lognormal) 分布的随机数。这种分布是连续概率分布族,随机变量的对数服从正态分布。

它依赖于两个参数,**mu** 和 **sigma**,其中 mu 是均值,sigma 是基础正态分布的标准差。

对数正态分布常用于自然科学、工程、医学、经济学和其他领域。

此函数无法直接访问,因此我们需要导入 random 模块,然后需要使用 random 静态对象调用此函数。

语法

以下是 lognormvariate() 方法的语法:

random.lognormvariate(mu, sigma)

参数

Python random.lognormvariate() 方法接受两个参数:

  • **mu:** 这是基础正态分布的均值(对数正态分布的自然对数)。它可以取任何实数值。

  • **sigma:** 这是基础正态分布的标准差。它必须大于零。

返回值

此 **random.lognormvariate()** 方法返回一个遵循对数正态分布的随机数。

示例 1

让我们看看使用 **random.lognormvariate()** 方法从均值为 0,标准差为 1 的正态分布生成随机数的基本示例。

import random

# mean
mu = 0  
# standard deviation
sigma = 1  

# Generate a log normal-distributed random number
random_number = random.lognormvariate(mu, sigma)

# Print the output
print("Generated random number from log normal distribution:",random_number)

以下是输出:

Generated random number from log normal distribution: 9.472544796309364

**注意:**由于其随机性,每次运行程序时生成的输出都会有所不同。

示例 2

此示例使用 **random.lognormvariate()** 方法生成一个包含 10 个遵循对数正态分布的随机数的列表。

import random

# mean
mu = 0

# standard deviation
sigma = 0.5  

result = []

# Generate a list of random numbers from the log normal distribution
for i in range(10):
    result.append(random.lognormvariate(mu, sigma))

print("List of random numbers from log normal distribution:", result)

执行上述代码时,您将获得类似于以下的输出:

List of random numbers from log normal distribution: [0.500329149795808, 1.7367179979113172, 0.5143664713594474, 0.5493391936855808, 1.3565058546966193, 1.4841135680348012, 0.5950837276748621, 0.8880005878135713, 1.0527856543498058, 0.7471389015523113]

示例 3

这是一个使用 **random.lognormvariate()** 方法的另一个示例,它演示了如何更改均值和标准差会影响正态分布的形状。

import random
import matplotlib.pyplot as plt

# Define a function to generate and plot data for a given mu and sigma
def plot_log_norm(mu, sigma, label, color):

    # Generate log normal-distributed data
    data = [random.lognormvariate(mu, sigma) for _ in range(10000)]

    # Plot histogram of the generated data
    plt.hist(data, bins=100, density=True, alpha=0.8, color=color, label=f'(mu={mu}, sigma={sigma})')

fig = plt.figure(figsize=(7, 4))

# Plotting for each set of parameters
plot_log_norm(0, 1, '0, 1', 'blue')
plot_log_norm(0, 0.5, '0, 0.5', 'green')
plot_log_norm(0, 0.25, '0, 0.25', 'yellow')

# Adding labels and title
plt.title('Log Normal Distributions')
plt.legend()

# Show plot
plt.show()

以上代码的输出如下:

Random Lognormvariate Method
广告