caw*_*caw 6 simulation probability
在一个在线经理游戏(如Hattrick)中,我想模拟两个团队之间的匹配.
一支球队由11名球员组成.每位球员的实力值都在1到100之间.我为每支球队采取防守球员的这些力量值并计算平均值.这是球队的防守质量.然后我抓住了进攻球员的优势,我获得了进攻质量.
对于每次攻击,我执行以下操作:
$offFactor = ($attackerTeam_offensive-$defenderTeam_defensive)/max($attackerTeam_offensive, $defenderTeam_defensive);
$defFactor = ($defenderTeam_defensive-$attackerTeam_offensive)/max($defenderTeam_defensive, $attackerTeam_offensive);
Run Code Online (Sandbox Code Playgroud)
目前,我不知道为什么我将它除以两个值中较高的值.但是这个公式应该为你提供一个后来需要的进攻和防守质量的因素.
然后我为每个可能发生的事件嵌套了条件语句.例如:进攻球队是否获得得分机会?
if ((mt_rand((-10+$offAdditionalFactor-$defAdditionalFactor), 10)/10)+$offFactor >= 0)
{ ... // the attack succeeds
Run Code Online (Sandbox Code Playgroud)
例如,这些额外因素可能是战术价值.
你认为这是计算游戏的好方法吗?我的用户说他们对模拟的质量不满意.我怎样才能改进它们?你有不同的方法可以提供更好的结果吗?或者您认为我的方法是好的,我只需要调整条件语句中的值并进行一些实验?
我希望你能帮助我.提前致谢!
小智 19
这是我要做的一种方式.
进攻/防守质量
首先让我们计算出整个团队的平均实力:
Team.Strength = SUM(Players.Strength) / 11
Run Code Online (Sandbox Code Playgroud)
现在我们想分成两局,并计算我们的防守球员和我们的进攻球员的平均值.
Defense.Strength = SUM(Defensive_Players.Strength)/Defensive_Players.Count
Offense.Strength = SUM(Offense_Players.Strength)/Offense_Players.Count
Run Code Online (Sandbox Code Playgroud)
现在,我们有三个值.第一个是团队平均值,将用于计算我们获胜的几率.另外两个,将计算我们的防守几率和得分几率.
进攻平均水平较高的球队将有更多的机会,高防守的球队将有更多的机会获得节省.
现在,如果我们有团队,我们称他们为A和B.
A队,平均80分,进攻得分85分,防守得分60分.
B队,平均得分70,进攻得分50,防守得分80.
现在,基于平均值.A队应该有更好的获胜机会.但是多少钱?
得分和储蓄
让我们弄清楚A队应该得分的目标:
A.Goals = (A.Offensive / B.Defensive) + RAND()
= (85/80) + 0.8;
= 1.666
Run Code Online (Sandbox Code Playgroud)
我假设随机值在-1和+1之间添加任何东西,尽管你可以调整它.
我们可以看到,该公式表明A队应该打进1.6球.我们可以向上/向下舍入.或者给团队A 1,并计算是否允许另一个(随机机会).
现在为B队
B.Goals = (B.Offensive / A.Defensive) + RAND()
= (50/60) + 0.2;
= 1.03
Run Code Online (Sandbox Code Playgroud)
所以我们得分为A和B得分1.但是请记住,我们希望以A的优势来衡量这一点,因为总的来说,他们是更好的球队.
那么A赢得的机会是多少?
Chance A Will Win = (A.Average / B.Average)
= 80 / 70
= 1.14
Run Code Online (Sandbox Code Playgroud)
所以我们可以看到赔率为14%(.14),有利于A赢得比赛.我们可以使用此值来查看最终得分是否有任何变化:
if Rand() <= 0.14 then Final Score = A 2 - 1 B Otherwise A 1 - 1 B
Run Code Online (Sandbox Code Playgroud)
如果我们的随机数为0.8,则该比赛为平局.
四舍五入与进一步思考
你一定会想要玩这些价值观.请记住,游戏机制很难做到正确.与你的球员交谈,问他们为什么不满意.队伍总是在输球吗?模拟总是停滞不前吗?等等
上述轮廓深受选择随机性的影响.你需要将其标准化,以便球队获得额外5个进球的机会非常罕见.但是一点点随机性是为游戏添加一些变化的好方法.
还有一些方法可以编辑此方法.例如,您可以使用目标数字作为得分机会的数量,然后根据其他因素计算目标数量(即选择一名随机前锋,并使用该球员个人),而不是目标数量统计数据和守门员,如果有目标,可以计算出来)
我希望这有帮助.