我知道我的订单需要很多计算,但我希望您能将其视为一项挑战。
我有一个名为的表matchup
,如下所示:
注意:每列的数据类型(除了players
)是decimal(5,2)
+------------------------------------------------------------------+
|players player1 player2 player3 player4 player5 player6 player7|
+------------------------------------------------------------------+
|player1 NULL 47.01 52.22 47.59 47.79 43.67 47.61 |
|player2 51.34 NULL 51.76 49.29 48.22 44.46 48.16 |
|player3 46.00 46.33 NULL 41.90 40.46 41.17 39.66 |
|player4 50.34 48.39 55.65 NULL 50.47 44.89 48.48 |
|player5 50.23 49.25 56.76 46.76 NULL 47.27 47.61 |
|player6 54.96 53.77 56.92 53.33 51.36 NULL 49.07 |
|player7 51.03 50.00 58.12 49.12 50.20 48.55 NULL |
+------------------------------------------------------------------+
该表显示了每个玩家对抗其他玩家的概率(以% 为单位)。该表应如下所示:例如 player1 有 47.01% 的机会战胜 player2。球员对自己的概率在这里没有意义,在计算赔率时应该省略这些数据。
想象一下,你是一个球队的经理,你知道你的对手球队将由1-5 名球员组成。球员姓名将在以下变量中给出$a
,$b
, $c
, $d
, $e
。例如,它可能是$a='player2';
$b='player4';
$c='player7'
(在这种情况下,我们的对手球队中只有 3 名球员)。
鉴于这些信息,目标是确定哪些是面对敌方球队的最佳球员,并为他们提供战胜另一支球队的机会。
在这个例子中,每个球员战胜对手球队的概率由下式给出:
player1 = mean(47.01; 47.59; 47.61) = 47.40
player2 = cannot be chosen (because it is already chosen by the other team)
player3 = mean(46.33; 41.90; 39.66) = 42.63
player4 = cannot be chosen
player5 = mean(49.25; 46.74; 47.71) = 47.87
player6 = mean(53.77; 53.33; 49.07) = 52.06
player7 = cannot be chosen
此结果应预设为关联数组,其值按降序排列:
$result = array(
'player6' => '52.06',
'player5' => '47.87',
'player1' => '47.40',
'player3' => '42.63'
);
请注意,此表只是一个摘录,代码应考虑到该表可能涉及超过 7 名玩家。
任何帮助将不胜感激!