我试图从一个大的球员名单中创建一个由11名球员组成的梦幻板球队.
对于球队,我对每种类型的球员都有基本的最低和最高要求.我的赋值方式如下:
$min_wicket_keeper = 1;
$min_batsman = 3;
$min_all_rounders = 1;
$min_bowlers = 2;
$max_wicket_keeper = 3;
$max_batsman = 5;
$max_all_rounders = 5;
$max_bowlers = 4;
我的球员总数是这样的:
$total_wicket_keepers = 2;
$total_batsman = 6;
$total_all_rounders = 5;
$total_bowlers = 5;
你可以看到我总共有18名球员.现在我想创建一个由11名球员组成的团队,分配随机类型的球员--记住球员的最低和最高要求.
示例1
$wicket_keeper_limit = 1;
$batsman_limit = 4;
$all_rounder_limit = 4;
$bowler_limit = 2;
//so total 11
示例2
$wicket_keeper_limit = 2;
$batsman_limit = 3;
$all_rounder_limit = 3;
$bowler_limit = 3;
//so total 11
我想为每种类型分配一个随机数字,但总数应为11,不应低于最低要求,不应大于每种类型的可用球员总数,然后是最大限制.
我try 过这样的代码
$min_wicket_keeper = 1;
$min_batsman = 3;
$min_all_rounders = 1;
$min_bowlers = 2;
$max_wicket_keeper = 3;
$max_batsman = 5;
$max_all_rounders = 5;
$max_bowlers = 4;
$total_wicket_keepers = 2;
$total_batsman = 6;
$total_all_rounders = 5;
$total_bowlers = 5;
$total_players_match = $total_wicket_keepers+$total_batsman+$total_all_rounders+$total_bowlers;
echo $total_players_match;
if ($total_players_match > 11) {
$remain_players = 11;
if ($total_wicket_keepers > $min_wicket_keeper) {
$wicket_keeper_limit = rand($min_wicket_keeper,$total_wicket_keepers);
$remain_players = $remain_players-$wicket_keeper_limit;
} else {
$wicket_keeper_limit = $total_wicket_keepers;
$remain_players = $remain_players-$wicket_keeper_limit;
}
echo "WK: ".$wicket_keeper_limit." REMAIN: ".$remain_players."<br>";
if ($total_batsman>$min_batsman) {
$batsman_limit = rand($min_batsman,$total_batsman);
$remain_players = $remain_players-$batsman_limit;
if ($remain_players > ($total_bowlers + $total_all_rounders)) {
$batsman_limit = ($min_batsman + $remain_players) - ($total_bowlers+$total_all_rounders);
$remain_players = $remain_players-$batsman_limit;
}
} else {
$batsman_limit = $total_batsman;
$remain_players = $remain_players-$batsman_limit;
}
echo "BT: " . $batsman_limit . " REMAIN: " . $remain_players . "<br>";
if ($total_bowlers > $min_bowlers) {
$bowler_limit = rand($min_bowlers, $total_bowlers);
$remain_players = $remain_players - $bowler_limit;
if ($remain_players > $total_all_rounders) {
$bowler_limit = $total_bowlers;
$remain_players = $remain_players - $bowler_limit;
}
} else {
$bowler_limit = $total_bowlers;
$remain_players = $remain_players - $bowler_limit;
}
echo "BOL:" . $bowler_limit . " REMAIN:" . $remain_players . "<br>";
$all_rounder_limit = $remain_players;
echo "ALL: " . $all_rounder_limit . " REMAIN: " . $remain_players . "<br>";
} else {
$wicket_keeper_limit = $total_wicket_keepers;
$batsman_limit = $total_batsman;
$all_rounder_limit = $total_all_rounders;
$bowler_limit = $total_bowlers;
}
echo "WK:" . $wicket_keeper_limit . "<br>";
echo "BT:" . $batsman_limit . "<br>";
echo "BO:" . $bowler_limit . "<br>";
echo "AL:" . $all_rounder_limit . "<br>";
但它不能达到follow my minimum and maximum requirements. Sometimes I am getting bowler as 0 and sometimes I am getting all rounder as high as 6.
Edit:根据 comments ,我应该明确的是,我将生成多支球队与放在上面的代码在While循环,像50支球队将有不同的/随机的球员在每种类型像一些球队有5名击球手,有些球队将只有3名击球手.
当我会得到上面的代码工作,我会在稍后从我的数据库根据限制,我已经为每种类型得到球员.