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

随机投球入孔模拟:空孔相对频率计算难题

100球投100孔模拟实验实现方案

核心实现思路

直接用蒙特卡洛模拟完成:每次实验随机生成100个球的落孔位置,统计空孔数量;重复1000次后,计算各空孔数对应的相对频率。不需要复杂的组合函数,用随机模拟直接复现实验过程更直观可靠。

Python代码实现

import numpy as np
from collections import defaultdict

# 实验参数配置
total_balls = 100
total_holes = 100
trial_times = 1000

# 初始化空孔数统计容器
empty_hole_counter = defaultdict(int)

for _ in range(trial_times):
    # 随机生成每个球的落孔编号(0-99对应100个孔)
    ball_positions = np.random.randint(0, total_holes, size=total_balls)
    # 统计有球的孔数量
    filled_hole_num = len(np.unique(ball_positions))
    # 计算当前实验的空孔数量
    empty_hole_num = total_holes - filled_hole_num
    # 记录该空孔数出现的次数
    empty_hole_counter[empty_hole_num] += 1

# 计算各空孔数的相对频率
relative_freq = {k: v / trial_times for k, v in sorted(empty_hole_counter.items())}

# 输出结果
for empty_num, freq in relative_freq.items():
    print(f"空孔数 {empty_num}: 相对频率 {freq:.4f}")

代码说明

  • 用numpy.random.randint快速生成100个球的落孔位置,模拟随机投球的过程
  • np.unique用于统计有球的孔的数量,总孔数减去该值即为当前实验的空孔数
  • 用defaultdict记录每个空孔数出现的次数,最后除以总实验次数得到相对频率
  • 对结果排序后输出,方便查看1到99各空孔数对应的频率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:05:25