You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Numpy生成指定均值和标准差的随机数组?

如何用Numpy生成指定均值和标准差的随机数组

嘿,这个问题其实很好解决!你现在用的np.random.randn()生成的是标准正态分布的随机数——也就是均值为0、标准差为1的分布。要得到任意均值和标准差的正态分布数组,只需要做个简单的线性变换就行,或者直接用Numpy提供的更直观的函数。

方法一:线性变换(基于randn)

标准正态分布的随机数,经过「乘以目标标准差 + 加上目标均值」的变换后,就能得到你想要的分布。公式是:

目标数组 = 预设均值 + 预设标准差 × np.random.randn(样本数量)

举个实际的例子,假设你想要均值为5、标准差为2的1000个随机数,代码可以改成这样:

import numpy as np

# 定义你需要的参数
target_mean = 5
target_std = 2
sample_size = 1000

# 生成符合要求的数组
x = target_mean + target_std * np.random.randn(sample_size)

# 验证结果(因为是随机数,会和目标值有微小误差,样本量越大越接近)
print("Average:")
print(x.mean())
print("Standard deviation:")
print(x.std())

方法二:直接用np.random.normal()

Numpy其实提供了更直接的函数np.random.normal(),可以直接指定均值(loc参数)、标准差(scale参数)和样本数量,代码更易读:

import numpy as np

target_mean = 5
target_std = 2
sample_size = 1000

# 直接生成指定分布的数组
x = np.random.normal(loc=target_mean, scale=target_std, size=sample_size)

# 验证
print("Average:", x.mean())
print("Standard deviation:", x.std())

这两种方法本质是等价的,np.random.normal()底层也是类似的线性变换逻辑,不过第二种写法更清晰,适合直接指定参数的场景。

注意:因为是随机采样,计算出来的均值和标准差会和你预设的值有一点点偏差,这是正常的统计现象——当样本数量越大时,这个偏差会越小。

内容的提问来源于stack exchange,提问作者EORS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:05:09