多轮试验下计算指定随机实验中有利结果的相对频率
计算该随机实验中有利结果的相对频率
首先先明确完整的实验流程(补全原描述中缺失的盒子2抽样规则,逻辑上与盒子1保持一致):
设有两个装有不同颜色球的盒子。盒子1包含2个蓝球和1个红球;盒子2包含2个蓝球、3个红球和1个白球。实验流程:生成一个[0,1]区间的均匀随机数,若随机数>0.5,从盒子1有放回抽取4个球;若随机数≤0.5,从盒子2有放回抽取4个球。我们需要计算多轮试验中「有利结果」的相对频率。
核心思路
相对频率的本质就是多轮试验中有利结果出现的次数 ÷ 总试验次数。当试验次数足够多时,这个频率会趋近于单次试验中有利结果发生的理论概率。
我们可以分两步走:
- 先计算单次试验中得到有利结果的理论概率(可选,但能帮你预判模拟结果)
- 通过代码模拟多轮试验,直接计算相对频率
第一步:计算理论概率(以「抽到至少1个红球」为例)
先明确两个盒子的抽球概率:
- 盒子1:总3个球,红球概率
1/3,蓝球概率2/3 - 盒子2:总6个球,红球概率
3/6=1/2,蓝球2/6=1/3,白球1/6
选盒子1时的有利概率
我们用「1 - 全非红球的概率」来简化计算:P(盒1有利) = 1 - (2/3)^4 = 1 - 16/81 ≈ 0.8025
选盒子2时的有利概率
同理:P(盒2有利) = 1 - (无红球的概率) = 1 - ( (2+1)/6 )^4 = 1 - (1/2)^4 = 15/16 = 0.9375
单次试验的总有利概率
因为选两个盒子的概率各是50%:P(总有利) = 0.5 * 0.8025 + 0.5 * 0.9375 = 0.87
第二步:代码模拟多轮试验
用Python写个简单的模拟脚本,你可以根据实际需求修改「有利结果」的判断逻辑:
import random def run_single_trial(favorable_check): # 随机选择盒子 if random.uniform(0, 1) > 0.5: # 盒子1的球池 box = ["蓝", "蓝", "红"] else: # 盒子2的球池 box = ["蓝", "蓝", "红", "红", "红", "白"] # 有放回抽取4个球 sample = [random.choice(box) for _ in range(4)] # 判断是否符合有利条件 return favorable_check(sample) # 自定义有利条件:这里是「样本中至少有1个红球」 def is_favorable(sample): return "红" in sample # 模拟10000次试验 total_trials = 10000 favorable_count = 0 for _ in range(total_trials): if run_single_trial(is_favorable): favorable_count += 1 relative_frequency = favorable_count / total_trials print(f"模拟{total_trials}次后,有利结果的相对频率为: {relative_frequency:.4f}")
代码说明
run_single_trial函数负责完成一次完整的实验流程:选盒子→抽样本→判断是否有利is_favorable是自定义的有利条件函数,你可以轻松修改它,比如改成「恰好2个蓝球」:def is_favorable(sample): return sample.count("蓝") == 2- 试验次数越多,相对频率越接近我们之前计算的理论概率。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

