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

如何用Python从总体生成随机样本?样本均值计算实现求助

Python随机抽样问题解答

嘿,我来帮你搞定这两个关于Python随机抽样的问题!

问题1:如何用Python从总体中生成随机样本?

在Python里,numpy库是处理随机抽样最常用的工具,根据你要模拟的总体分布不同,可以选择对应的函数:

  • 如果总体是标准正态分布(均值为0,方差为1),直接用np.random.randn(),传入样本容量就能生成对应数量的随机数;
  • 如果是自定义参数的正态分布,用np.random.normal(mean, std, size),其中mean是均值,std是标准差,size是样本容量;
  • 要是从已有的一组总体数据里随机抽样(比如从列表/数组里抽取),用np.random.choice(population, size, replace=True),replace=True表示可放回抽样,False为不放回;
  • 其他分布比如均匀分布、泊松分布等,也可以用np.random.uniform()、np.random.poisson()这类对应函数。

问题2:生成1000个容量为50的随机样本并计算均值

你提到想用randn函数,这个思路完全没问题!randn正好用来生成标准正态分布的样本,下面给你两种实现方式:

方式1:循环实现(直观易懂)

适合刚接触的朋友,逻辑清晰:

import numpy as np

# 初始化空列表存储1000个样本均值
norm_samples_50 = []

# 循环生成1000组样本
for _ in range(1000):
    # 生成1组容量为50的标准正态分布样本
    single_sample = np.random.randn(50)
    # 计算该样本的均值并加入列表
    sample_mean = np.mean(single_sample)
    norm_samples_50.append(sample_mean)

方式2:向量化实现(高效快捷)

利用numpy的数组操作,避免循环,速度更快,适合大数据量场景:

import numpy as np

# 直接生成1000组、每组50个样本的二维数组(形状为(1000, 50))
all_samples = np.random.randn(1000, 50)
# 按行计算均值(axis=1表示沿着每行的方向计算),最后转成列表
norm_samples_50 = np.mean(all_samples, axis=1).tolist()

如果你的总体不是标准正态分布,只需要把np.random.randn()换成np.random.normal(mean, std, (1000,50))就行,比如均值为5、标准差为2的话,代码就改成all_samples = np.random.normal(5, 2, (1000,50))。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:35:55