赢得PHP百分比计算的机会

问题描述 投票:8回答:5

我有一个“战斗”系统,攻击者的战斗力例如100,防守者的力量例如75。

但是我现在陷入困境,我不知道如何找到获胜者。我知道攻击者有25%的机会丢失,但我无法弄清楚脚本。

有什么想法吗?

php random probability
5个回答
17
投票

[[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

3
投票

如果我将其作为可用的函数添加到代码中:


3
投票

[玩家A对B获胜的几率是A /(A + B),这是任何数量和比例的。然后使用动态答案来计算实际结果。


2
投票

使用随机数生成器,您可以创建一个函数,例如:


0
投票
mt_rand
© www.soinside.com 2019 - 2024. All rights reserved.