Python中如何移除随机生成的最低值?D&D角色属性掷骰需求
D&D属性掷骰:去掉4D6中最小值的实现方法
你现在的代码直接把四个D6加起来,没法单独拿到每个骰子的结果,自然没法去掉最小值。换个思路,先把四个骰子的结果存起来,再计算总和减去最小值就行,具体代码如下:
基础实现
import random # 生成4个1-6的随机数,对应4次D6掷骰 dice_results = [random.randint(1, 6) for _ in range(4)] # 总和减去最小值,就是最终属性值 stat = sum(dice_results) - min(dice_results)
封装成函数(方便多次生成属性)
如果要生成角色的6个属性值,可以把掷骰逻辑封装成函数,调用起来更方便:
import random def roll_dnd_stat(): # 生成4次D6结果 rolls = [random.randint(1, 6) for _ in range(4)] # 返回去掉最小值后的总和 return sum(rolls) - min(rolls) # 生成6个属性值 character_stats = [roll_dnd_stat() for _ in range(6)] print(character_stats)
核心逻辑就是先保存所有骰子的结果,再通过sum()和min()组合计算出最终值,这也是D&D官方推荐的属性生成规则(4d6丢最低)。
内容的提问来源于stack exchange,提问作者LukeB4UGame
相关产品推荐
相关产品推荐

