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

关于有放回与无放回抽样均值一致问题的代码排查请求

无放回抽样均值完全相同的原因及解决办法

问题根源

你在无放回抽样时设置了size = len(q2array),这会让np.random.choice执行全量无放回抽样——本质就是把原数组的元素打乱顺序重新排列,但所有元素都被保留,没有任何增减。既然元素和原数组完全一致,只是顺序不同,计算出来的均值自然和原数组均值一模一样,每次抽样结果的均值也就不会有变化。

验证方法

你可以打印原数组的均值,会发现和三次无放回抽样的均值完全相等:

print('原数组均值:', np.mean(array))

修改方案

如果想观察无放回抽样的均值波动,需要将抽样的size设置为小于原数组的长度,比如抽取原数组一半的元素。修改后的代码示例:

import numpy as np

def sample(q2array, replace=True, sample_size=None):
    # 未指定抽样大小时,默认用原数组长度
    if sample_size is None:
        sample_size = len(q2array)
    sampling = np.random.choice(q2array,
                        size=sample_size,
                        replace=replace)
    return sampling

# 有放回抽样(原逻辑不变)
replace1=sample(array, True)
print('有放回抽样均值1:', np.mean(replace1))
replace2=sample(array, True)
print('有放回抽样均值2:', np.mean(replace2))

# 无放回抽样:抽取原数组一半长度的元素
noreplace1=sample(array, False, sample_size=len(array)//2)
print('无放回抽样均值1:', np.mean(noreplace1))
noreplace2=sample(array, False, sample_size=len(array)//2)
print('无放回抽样均值2:', np.mean(noreplace2))

这样修改后,无放回抽样每次抽取的元素是原数组的子集,均值就会出现正常的波动了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:05:25