随机Python模块与创建概率
我有一个文字冒险游戏,里面已经有了战斗系统。这个战斗是回合制的,玩家和敌人都会造成伤害(用浮点数表示)。我使用 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