随机Python模块和创建机会

随机Python模块和创建机会,python,random,Python,Random,我有一个文字冒险游戏与战斗系统已经到位。它当然是基于回合的,玩家和敌人都会造成伤害点(浮动)。我使用random.uniform()函数为每一轮生成攻击点。 零代表失去敌人或玩家。然而,由于我使用浮动,这种可能性非常小。我想创造一个条件,假设五分之一的几率攻击点等于0.00。必须在每一轮上运行此条件 我该怎么做呢?有我可以使用的模块吗 注意:我想我可以使用随机模块(random.randint(0,5)),但我想知道是否还有其他方法。谢谢 我认为您应该使用random.uniform()为0.0

我有一个文字冒险游戏与战斗系统已经到位。它当然是基于回合的,玩家和敌人都会造成伤害点(浮动)。我使用
random.uniform()
函数为每一轮生成攻击点。 零代表失去敌人或玩家。然而,由于我使用浮动,这种可能性非常小。我想创造一个条件,假设五分之一的几率攻击点等于0.00。必须在每一轮上运行此条件

我该怎么做呢?有我可以使用的模块吗


注意:我想我可以使用随机模块(
random.randint(0,5)
),但我想知道是否还有其他方法。谢谢

我认为您应该使用
random.uniform()
为0.00攻击点保留20%的值

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

你可以将从0到1的几率乘以最大命中伤害(智力):


只是一个猜测。

我建议滚动两个随机数字:一个是命中概率,另一个是实际造成的伤害。您还可以将它们与玩家属性相结合。例如:

if random.uniform(0, 100) < player.chance_to_hit:
    damage = random.uniform(weapon.min_damage, weapon.max_damage)
如果随机。均匀(0,100)
五分之一的概率攻击点等于0.00

|

或者,如果你想看到大的真实数字:

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

if random.randint(01100)攻击点应该是浮点值还是整数?生命点和攻击点都是浮点值。也许我只是把事情复杂化了。。。我尝试过用
random.randint(0,4)
创建条件,效果非常好。但我仍然对其他解决方案感兴趣。是的,我最终得到了类似的结果。啊,我明白了。简单的数学-首先应该做到这一点。谢谢
if random.uniform(0, 100) < player.chance_to_hit:
    damage = random.uniform(weapon.min_damage, weapon.max_damage)
if random.randint(1, 5)==1:
    attack_points=0.00
if random.randint(0, 100)<=20:
    attack_points=0.00