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

请求优化d6骰子投掷统计代码:计算各类平均值与总和

优化后的单d6投掷统计代码
import random

# 配置参数
repeat = 5  # 组数
numRolls = 3  # 每组投掷次数

group_totals = []
total_all_rolls = 0

print("=== 每组投掷统计 ===")
for group in range(1, repeat + 1):
    group_sum = 0
    for _ in range(numRolls):
        roll = random.randint(1, 6)
        group_sum += roll
        total_all_rolls += roll
    group_avg = group_sum / numRolls
    group_totals.append(group_sum)
    print(f"第 {group} 组: 总和={group_sum}, 平均值={group_avg:.2f}")

# 全局统计
total_rolls = repeat * numRolls
overall_avg = total_all_rolls / total_rolls if total_rolls > 0 else 0
group_total_avg = sum(group_totals) / repeat if repeat > 0 else 0

print("\n=== 全局统计 ===")
print(f"总投掷次数: {total_rolls}")
print(f"所有投掷的总平均值: {overall_avg:.2f}")
print(f"各组总和的平均值: {group_total_avg:.2f}")

关键优化说明

  • 移除冗余变量:删除原代码中重复计数、临时存储单骰子结果的冗余变量,仅保留核心统计变量(group_totals存储各组总和、total_all_rolls存储所有投掷总点数)。
  • 精准统计核心指标:
    • 总投掷次数直接通过repeat * numRolls计算,避免循环累加可能出现的计数错误;
    • 所有投掷的总平均值通过total_all_rolls除以总投掷次数得到,结果无偏差;
    • 各组总和的平均值通过sum(group_totals) / repeat计算,复用存储的各组数据,逻辑清晰。
  • 模块化逻辑:每组统计与全局统计分离,每组循环内仅处理当前组的投掷、求和与平均值计算,全局统计在所有组完成后统一计算,可读性更强。
  • 鲁棒性处理:添加除数为0的判断(当repeat或numRolls为0时),避免程序报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:05:21