如果我将其作为可用的函数添加到代码中:
我有一个“战斗”系统,攻击者的战斗力例如100,防守者的力量例如75。
但是我现在陷入困境,我不知道如何找到获胜者。我知道攻击者有25%的机会丢失,但我无法弄清楚脚本。
有什么想法吗?
[[0]之间提取一个随机数,或者如果您更喜欢0...100
。然后检查此数字是否小于75。如果是,则攻击者获胜。
0...1
这具有非常严格的概率解释。如果您随机抽取$p = rand(0,99);
if ($p<75)
// Attacker Won!
之间的数字,则该数字将小于75的几率为75%。正是您所需要的。
在这种情况下,您只需要0...100
功能。还要注意@Marek的建议,攻击者的获胜机会可能远远低于75%。 (阅读Marek的答案,即有57%的获胜机会。)>
当您需要对更复杂的概率密度函数进行建模时会出现问题,例如:
“ >>
在这种情况下,您将需要更复杂的模型,例如rand()
。
如果我将其作为可用的函数添加到代码中:
gaussian mixture
将根据需要简单地返回true或false。传递所需的任何值。
[玩家A对B获胜的几率是A /(A + B),这是任何数量和比例的。然后使用动态答案来计算实际结果。
例如:
function attack($attack, $defend)
{
return (mt_rand(1, $attack) > $defend);
}
$attack = 100;
$defend = 75;
var_dump(attack(100,75));
使用随机数生成器,您可以创建一个函数,例如:
$c = (75/(100+75)); // 0.42857142857142857143
$Awon = mt_rand(0, 9999) < ($c * 10000);
然后您可以在任何地方使用该功能。注意:function chance($percent) {
return mt_rand(0, 99) < $percent;
}
应该生成更好的随机数。
mt_rand
如果我将其作为可用的函数添加到代码中:
[玩家A对B获胜的几率是A /(A + B),这是任何数量和比例的。然后使用动态答案来计算实际结果。
使用随机数生成器,您可以创建一个函数,例如:
mt_rand