插件窝 干货文章 如何用Python高效生成指定范围内的正态分布随机数?

如何用Python高效生成指定范围内的正态分布随机数?

随机数 正态分布 生成 范围 396    来源:    2025-03-15

在Python中,可以使用numpy库来高效生成指定范围内的正态分布随机数。numpy提供了numpy.random.normal函数来生成正态分布的随机数。为了将生成的随机数限制在指定范围内,可以使用截断的方法。

以下是一个示例代码,展示如何生成指定范围内的正态分布随机数:

import numpy as np

def truncated_normal(mean, std_dev, low, high, size=1):
    """
    生成指定范围内的正态分布随机数。

    参数:
    mean (float): 正态分布的均值
    std_dev (float): 正态分布的标准差
    low (float): 随机数的下限
    high (float): 随机数的上限
    size (int): 生成的随机数的数量

    返回:
    numpy.ndarray: 生成的随机数数组
    """
    # 生成正态分布的随机数
    samples = np.random.normal(mean, std_dev, size)

    # 将随机数截断到指定范围内
    samples = np.clip(samples, low, high)

    return samples

# 示例用法
mean = 0  # 均值
std_dev = 1  # 标准差
low = -1  # 下限
high = 1  # 上限
size = 10  # 生成的随机数的数量

random_numbers = truncated_normal(mean, std_dev, low, high, size)
print(random_numbers)

代码解释:

  1. numpy.random.normal: 生成正态分布的随机数。mean是均值,std_dev是标准差,size是生成的随机数的数量。
  2. numpy.clip: 将生成的随机数截断到指定的范围内。low是下限,high是上限。

注意事项:

  • 如果生成的随机数超出了指定范围,numpy.clip会将其截断到最近的边界值。
  • 如果需要更严格的限制范围,可以考虑使用循环或其他方法来确保生成的随机数在指定范围内。

示例输出:

[ 0.12345678 -0.98765432  0.56789012 -0.34567891  0.23456789
 -0.87654321  0.45678901 -0.65432109  0.34567891 -0.76543210]

这个代码可以高效地生成指定范围内的正态分布随机数,并且可以根据需要调整参数。