随机Python模块与创建概率

3 投票
4 回答
1646 浏览
提问于 2025-04-17 23:38

我有一个文字冒险游戏,里面已经有了战斗系统。这个战斗是回合制的,玩家和敌人都会造成伤害(用浮点数表示)。我使用 random.uniform() 函数来生成每一轮的攻击点。

在这里,零表示攻击没有命中敌人或玩家。不过因为我用的是浮点数,所以这种情况发生的可能性很小。我想设置一个条件,让攻击点有1/5的机会等于0.00。这个条件需要在每一轮都执行。

我该怎么做呢?有没有什么模块可以使用?

备注:我觉得可以用随机模块 (random.randint(0,5)),但我在想有没有其他的方法。谢谢!

4 个回答

0

五分之一的机会,攻击点数会等于0.00

if random.randint(1, 5)==1:
    attack_points=0.00

|

或者如果你想看到一些看起来很大的真实数字:

if random.randint(0, 100)<=20:
    attack_points=0.00
0

你可以把一个从0到1的概率(小数)和一个最大伤害值(整数)相乘:

try:
    chance = 1.0 / random.randint(0, 5)
except ZeroDivisionError:
    chance = 0.0

damage = chance * MAXIMUM_DAMAGE

这只是个猜测。

1

我建议你先随机生成两个数字:一个用来决定攻击是否命中,另一个用来计算实际造成的伤害。你还可以把这些数字和玩家的属性结合起来。举个例子:

if random.uniform(0, 100) < player.chance_to_hit:
    damage = random.uniform(weapon.min_damage, weapon.max_damage)
3

我觉得你可以用 random.uniform() 这个方法,留出20%的值给0.00的攻击点数。

hit = random.uniform(0, 10)
if hit <= 2:
    damage = 0.00
else:
    damage = (hit - 2) / 8

这只是一个简单的例子,但可能会有帮助。或者更简单一点:

hit = random.uniform(0, 10)
if hit >= 8:
    damage = 0.00
else:
    damage = hit / 8

撰写回答