给定理论概率的实际发生次数Python模拟最优方案咨询
偏置骰子模拟统计最优实现方案
实现思路
- 直接用
numpy.random.choice批量生成1000次投掷结果,避免循环逻辑大幅提升运行效率 - 搭配
numpy.unique的return_counts参数直接输出各面出现次数,无需手动写遍历统计逻辑 - 输入输出和配置参数拆分,可读性和可修改性更强
完整代码(Numpy版本,大样本量性能最优)
import numpy as np # 基础参数配置 dice_faces = [1, 2, 3, 4, 5, 6] face_probs = [0.1, 0.2, 0.15, 0.25, 0.1, 0.2] throw_total = 1000 # 批量生成投掷结果 throw_results = np.random.choice(dice_faces, size=throw_total, p=face_probs) # 统计各面出现次数 unique_faces, occur_counts = np.unique(throw_results, return_counts=True) # 格式化输出结果 for face, count in zip(unique_faces, occur_counts): print(f"骰子面{face}模拟出现次数:{count}")
补充说明
- 如果需要每次运行得到相同的模拟结果方便调试,可以在生成结果前加
np.random.seed(42)(种子数值可自定义)。 - 如果你需要纯Python实现、不想安装第三方依赖,可以用标准库组合实现,适合轻量场景:
import random from collections import Counter dice_faces = [1, 2, 3, 4, 5, 6] face_probs = [0.1, 0.2, 0.15, 0.25, 0.1, 0.2] throw_total = 1000 throw_results = random.choices(dice_faces, weights=face_probs, k=throw_total) counts = Counter(throw_results) for face in sorted(counts.keys()): print(f"骰子面{face}模拟出现次数:{counts[face]}")
内容的提问来源于stack exchange,提问作者vivian
相关产品推荐
相关产品推荐

