Sim*_*ims 8 php random probability
我有一个"战斗"系统,攻击者具有例如100的战斗力,防御者具有例如75的强度.
但我现在陷入困境,我无法弄清楚如何找到胜利者.我知道攻击者有25%的机会失去,但我无法想象这个剧本.
有任何想法吗?
dyn*_*mic 17
0...100如果您愿意,可以在之间提取随机数0...1.
然后检查这个数字是否低于75.如果是,则攻击者获胜.
$p = rand(0,99);
if ($p<75)
// Attacker Won!
Run Code Online (Sandbox Code Playgroud)
这有一个非常明确的概率解释.如果你随机抽取一个数字,0...100你有75%的可能性,这个数字将低于75.正是你需要的.
在这种情况下,你只需要rand()功能.还要注意@Marek的建议,攻击者的获胜机会可能远低于75%.(阅读Marek的回答,指出获胜的几率为57%).
当您需要建模更复杂的概率密度函数时会出现问题,例如:

在这种情况下,您将需要一个更复杂的模型,如高斯混合.
使用随机数生成器,您可以创建一个函数,例如:
function chance($percent) {
return mt_rand(0, 99) < $percent;
}
Run Code Online (Sandbox Code Playgroud)
然后您就可以在任何地方使用该功能。注意:mt_rand据说会生成更好的随机数。
| 归档时间: |
|
| 查看次数: |
10659 次 |
| 最近记录: |