我正在打一场格斗游戏。它就像有两个球员。他们有100马力,他们在战斗时选择0-100之间的攻击值。在他们选择价值之后,他们应该有%(100值)成功进行此次攻击的机会。例如,如果他们选择值60,他们有40%的机会成功完成这次攻击。请你帮忙。抱歉我的英语不好。
答案 0 :(得分:2)
您想要的是在0
和100
之间生成一个随机数,并检查它是否大于您插入的数字。
例如,如果输入50,则随机数将大于(或相等)的可能性为50%,低50%。如果输入10,则该数字有90%的可能性更大。
您可以使用SQLfiddle生成0到100之间的随机数。然后它就是你的价值的简单比较,这应该就是你所需要的。
答案 1 :(得分:0)
通常,在统计学中,机会表示为0到1之间的数字,因此0.6表示60%的几率。然后,如果你想获得0.6的成功机会,你可以通过选择0到1之间的随机浮点数来判断是否成功,并检查它是否小于或等于0.6。
直观地说,你可以这样看待它:
|-----------------------------------|-----------------------|
0 0.6 1
如果你在这一行上选择一个随机点 - 你的0到1之间的随机数 - 它在0.6的左侧的几率是...... 0.6(60%)。
您可以使用random.uniform
:
import random
success_rate_percentage = 60
success = random.uniform(0, 1) <= success_rate_percentage / 100.0
现在简单检查一下这是否正常运行:
>>> import random
>>> success_count = 0
>>> for _ in range(100000):
... if random.uniform(0, 1) <= 0.6
... success_count += 1
...
>>> success_count
59954
预期结果约为0.6 * 100000 = 60000次成功,实际结果为59954,因此足够接近。