我有一个桌子女巫,看起来像这样:
-------------------------------------- | 索引 | 球员 | 日期 | 分数 | -------------------------------------- | 1 | 一月 | 2013-01-13 | 5 | -------------------------------------- | 2 | 彼得| 2013-01-13 | 6 | -------------------------------------- | 3 | 克拉斯 | 2013-01-13 | 5 | -------------------------------------- | 4 | 基斯 | 2013-01-13 | 7 | -------------------------------------- | 5 | 威廉| 2013-01-13 | 8 | -------------------------------------- | 6 | 约翰 | 2013-01-13 | 4 | --------------------------------------
现在我想做一些棘手的事情,为了像 2013-01-14 的比赛那样打下一场比赛,我们想让 2 支球队得分相等。
每个日期期间有 12 名球员,因此 2013 年 1 月 13 日是 12 名球员,而 2013 年 1 月 14 日仍然有相同的球员。
他们必须分成 2 支球队,所以 12 / 2 = 6。每支球队有 6 人。现在这不是问题,问题在于两支球队的总分必须相等或接近。
如果 12 名球员的所有分数都是 77,那么 2 支球队的总分数必须几乎相等,这样 77 / 2 = 38,5
球队 1 - 球员 6 - 总分 37
队 2 - 球员 6 - 总分 40
最后查询输出必须是这样的:
----------------------------------------------------------- | 索引 | 球员 | 日期 | 分数 | 团队 | ----------------------------------------------------------- | 1 | 一月 | 2013-01-13 | 5 | 1 | ----------------------------------------------------------- | 2 | 彼得| 2013-01-13 | 6 | 1 | ----------------------------------------------------------- | 3 | 克拉斯 | 2013-01-13 | 8 | 1 | ----------------------------------------------------------- | 4 | 基斯 | 2013-01-13 | 7 | 1 | ----------------------------------------------------------- | 5 | 威廉| 2013-01-13 | 5 | 1 | ----------------------------------------------------------- | 6 | 约翰 | 2013-01-13 | 6 | 1 | ----------------------------------------------------------- | 7 | 格瑞特 | 2013-01-13 | 6 | 2 | ----------------------------------------------------------- | 8 | 马杰| 2013-01-13 | 6 | 2 | ----------------------------------------------------------- | 9 | 莎拉 | 2013-01-13 | 8 | 2 | ----------------------------------------------------------- | 10 | 埃尔斯 | 2013-01-13 | 7 | 2 | ----------------------------------------------------------- | 11 | 艾伦 | 2013-01-13 | 5 | 2 | ----------------------------------------------------------- | 12 | 史蒂文 | 2013-01-13 | 8 | 2 | -----------------------------------------------------------
和
----------------------------------------------------------- | 团队 | 分数 | 日期 | 球员 | ----------------------------------------------------------- | 团队 1 | 37 | 2013-01-13 | 6 | ----------------------------------------------------------- | 团队 2 | 40 | 2013-01-13 | 6 | -----------------------------------------------------------
在#Danack 的一些启发下,我做了这个:
$difference = 10;
$team_smnstlln = array();
for($q=0; $q<1000; $q++){
$players = array();
$team_smnstlln[$q] = array(
'team1' => array(),
'team2' => array(),
'total' => 0
);
$count1 = 0;
for($w=0; $w<6; $w++){
$player = pick_random(true);
$score1 = $team_smnstlln[$q]['team1'][$player] = $data[$player]['score'];
$count1 = $count1 + $score1;
}
$count2 = 0;
for($w=6; $w<12; $w++){
$player = pick_random(true);
$score2 = $team_smnstlln[$q]['team2'][$player] = $data[$player]['score'];
$count2 = $count2 + $score2;
}
if($count1 > $count2){
$total = $count1 - $count2;
}
elseif($count2 > $count1){
$total = $count2 - $count1;
}
else{
$total = 0;
}
$team_smnstlln[$q]['total'] = $total;
if($team_smnstlln[$q]['total'] == 0){
$difference = 0;
$winner = $q;
break;
}
elseif($team_smnstlln[$q]['total'] < $difference){
$difference = $team_smnstlln[$q]['total'];
$winner = $q;
}
}
echo "Kleinst gekozen set met score verschil van $difference punten. array $winner is gekozen<br>";
$team1 = $team_smnstlln[$winner]['team1'];
$team2 = $team_smnstlln[$winner]['team2'];
print_r($team1);
print_r($team2);
// random player picker
function pick_random($gonogo){
global $players;
$go = true;
$total_players = 11;
while($go){
$player = rand(0, $total_players);
if(!in_array($player, $players)){
$players[] = $player;
$go = false;
}
}
return $player;
}
此代码运行 1000 个不同的团队设置。当得分差达到 0 时,它将停止并与最好的平等球队比赛相呼应。否则,当没有 0 差异时,它将返回最低结果