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

如何在Python掷骰子模拟程序中实现非重复的previous_roll功能?

掷骰子模拟程序:实现非重复掷骰与上一次结果追踪

问题分析

你的代码存在两个核心问题:

  1. 未定义start和end变量,调用random.randint会直接报错;
  2. 未利用previous_roll参数做判断逻辑,无法保证本次掷骰结果与上一次不同。

完整实现代码

import random

def roll_dice(previous_roll=None, start=1, end=6):
    # 第一次掷骰,无历史结果,直接生成随机数
    if previous_roll is None:
        return random.randint(start, end)
    
    # 循环生成随机数,直到与上一次结果不同
    while True:
        current_roll = random.randint(start, end)
        if current_roll != previous_roll:
            return current_roll

# 使用示例
# 第一次掷骰(无历史结果)
first_roll = roll_dice()
print(f"第一次掷骰结果:{first_roll}")

# 第二次掷骰(传入第一次结果作为上一次记录)
second_roll = roll_dice(previous_roll=first_roll)
print(f"第二次掷骰结果:{second_roll}")

# 第三次掷骰(传入第二次结果)
third_roll = roll_dice(previous_roll=second_roll)
print(f"第三次掷骰结果:{third_roll}")

关键逻辑说明

  • 给previous_roll设置默认值None,让第一次调用函数时无需传参,直接生成初始掷骰结果;
  • start和end设置默认值1和6(对应标准六面骰子),你也可以根据需求修改参数(比如roll_dice(previous_roll=5, start=1, end=12)生成12面骰子的非重复结果);
  • 循环生成逻辑:当存在历史结果时,不断生成新的随机数,直到其与previous_roll不同,确保满足“下一次结果与上一次不同”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:20:29