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

如何用Excel模拟工具解决1/10概率的掷骰成功次数统计问题?

特殊骰子试验模拟方案

问题概述

我们需要模拟200万次(或50万次)试验:每次试验投掷一个10面骰子,直到掷出数字"3"(成功概率1/10),记录每次试验所需的投掷次数,最终统计成功出现在不同区间(如1-10次、11-20次等)的占比。

模拟思路

这是典型的几何分布问题:每次试验独立,成功概率固定为0.1,我们关注首次成功所需的试验次数。模拟步骤如下:

  • 批量生成所有试验的首次成功次数
  • 将次数分组到预设区间
  • 计算每个区间内试验次数占总试验数的百分比

Python实现代码

使用numpy库可高效处理百万级别的模拟(比纯Python循环快得多):

import numpy as np

# 配置参数
total_trials = 2_000_000  # 总试验次数,可改为500_000
success_prob = 0.1  # 掷出"3"的概率
intervals = [0, 10, 20, 30, 40, 50, np.inf]  # 区间划分,可按需调整
interval_labels = ["1-10次", "11-20次", "21-30次", "31-40次", "41-50次", "50次以上"]

# 生成所有试验的首次成功次数
# np.random.geometric返回首次成功所需的试验次数,完全匹配需求
trial_counts = np.random.geometric(success_prob, size=total_trials)

# 统计各区间的试验次数
bin_counts, _ = np.histogram(trial_counts, bins=intervals)

# 计算占比并输出结果
print(f"总试验次数: {total_trials}")
print("各区间成功占比:")
for label, count in zip(interval_labels, bin_counts):
    percentage = (count / total_trials) * 100
    print(f"{label}: {percentage:.2f}%")

理论概率参考

为验证模拟结果准确性,可计算各区间的理论概率:

  • 1-10次成功概率:$\sum_{k=1}^{10} (0.9)^{k-1} \times 0.1 = 1 - (0.9)^{10} \approx 65.13%$
  • 11-20次成功概率:$(0.9)^{10} \times (1 - (0.9)^{10}) \approx 22.72%$
  • 21-30次成功概率:$(0.9)^{20} \times (1 - (0.9)^{10}) \approx 7.92%$

模拟结果会接近这些理论值,试验次数越多,误差越小。

运行说明

  1. 确保已安装numpy库(可通过pip install numpy安装)
  2. 调整total_trials参数可修改试验次数
  3. 修改intervals和interval_labels可自定义区间划分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:05:32