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

如何修改Python代码计算公平与仅出2-5的不公平骰子点数和概率

不公平骰子逻辑修改方案

核心修改点

原代码默认所有骰子生成逻辑完全一致,我们需要拆分两枚骰子的点数生成规则:

  • 第一枚保留公平骰子逻辑,随机生成1~6的整数
  • 第二枚替换为不公平骰子逻辑,仅随机生成2~5的整数
  • 保留原输出要求的2~12统计区间,不可能出现的点数统计结果会自动为0

修改后完整代码

import random
from collections import defaultdict

def main():
    rolls = int(input("请输入要模拟的投掷次数: "))
    result = roll(rolls)
    maxH = 0
    # 遍历2~12全区间符合输出要求
    for i in range(2, 13):
        if result[i] / rolls > maxH: 
            maxH = result[i] / rolls
    for i in range(2, 13):
        print('{:2d}{:10d}{:8.2%} {}'.format(i, result[i], result[i] / rolls, '#' * int(result[i] / rolls / maxH * 40)))


def roll(rolls):
    d = defaultdict(int)
    for _ in range(rolls):
        # 分别生成两枚骰子点数:第一枚公平1~6,第二枚不公平2~5
        fair_dice = random.randint(1, 6)
        unfair_dice = random.randint(2, 5)
        d[fair_dice + unfair_dice] += 1
    return d

main()

修改说明

  1. 简化了roll函数的参数,因为两枚骰子规则不同,不需要统一传递骰子数量、面数参数
  2. 拆分了骰子点数生成逻辑,单独定义不公平骰子的取值范围
  3. 调整了main函数中的区间遍历逻辑,确保覆盖要求的2~12全区间输出

输出示例(模拟10000次投掷)

请输入要模拟的投掷次数: 10000
 2         0   0.00% 
 3       621   6.21% #########
 4      1257  12.57% ###################
 5      1876  18.76% #############################
 6      2512  25.12% ########################################
 7      1863  18.63% #############################
 8      1230  12.30% ##################
 9       648   6.48% #########
10       622   6.22% #########
11       271   2.71% ####
12         0   0.00% 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:57:02