まず、私の英語の欠如についてお詫び申し上げます。ここで説明しようとしていることを理解してくれることを願っています。配列内の重複する値を制限する方法
基本的には、配列内の重複値の数を制限する関数を構築する必要があります。
私はこれを行う必要がある理由は、数字をグループに分けるシステムを構築しており、すべてのグループが同じ数の数字を持たなければならないということです。
EDIT:乱数はグループ番号を表します。
私は関数を作成しましたが、何らかの理由で正しく機能しません。
function jagaTiimid($max, $liiget, $tArvLength, $tArv){
$tiimid = []; //Starting array
for($z=0;$z<$liiget;$z++){
$numbers = [];
$rn = randomNumber($tArvLength, $tArv, $numbers); //Generate a random number for a group, etc group 1, group 2, group 3
$mitu = countInArray($tiimid, $rn); //Check how many times that number has occured in array
if($mitu == $max){ //If it equals to maximum number of times then...
$rnUus = randomNumber($tArvLength, $tArv, $numbers); //generate a new random number
while($rnUus == $rn){
$numbers = [];
$rnUus = randomNumber($tArvLength, $tArv, $numbers);
} //loop until the new generated number doesn't equal to old rn.
$tiimid[] = $rnUus; //if it doesn't equal to $rn then push into array
}else{
$tiimid[] = $rn;
}
}
return $tiimid;
}
何らかの理由で、数字がまだそれ以上に発生します。
基本的にどのように終わるべきではありません。
あなたが見ることができるように、一つのグループ(グループ2)は、他のグループよりも多く回発生するが、それは両方のグループのために等しくなければなりません。
EDIT:CountInArray();
function countInArray($array, $what) {
$count = 0;
for ($i = 0; $i < count($array); $i++) {
if ($array[$i] === $what) {
$count++;
}
}
return $count;
}
「英語の不足」とは何ですか? – arkascha
@arkascha私はネイティブスピーカーではないと思っていたので、あなたの人達/ギャルは私が説明していることを理解していないかもしれません。 – drpzxc
'while($ rnUus == $ rn)'を 'while(countInArray($ tiimid、$ rnUus)> = $ max)に置き換えてください。 ' –