ドロップダウンに10個のオプションがあり、オプション4が選択されている場合、4を除く1〜10個のオプションを選択するコードを作成するにはどうすればよいですか?
rand(1、10)が1から10までの乱数を選択することは知っていますが、4に到達することもあります。4またはすでに選択されている番号を選択しないようにするにはどうすればよいですか。
ドロップダウンに10個のオプションがあり、オプション4が選択されている場合、4を除く1〜10個のオプションを選択するコードを作成するにはどうすればよいですか?
rand(1、10)が1から10までの乱数を選択することは知っていますが、4に到達することもあります。4またはすでに選択されている番号を選択しないようにするにはどうすればよいですか。
一般に、1からnまでのオプションがあり、m番目のオプションが選択されている場合、次のアルゴリズムを使用して、mを除く1からnの間でランダムに均一に数値を生成できます。
<?php
function get_rand($n,$m)
{
$r = rand(1,$n-1); //generate one of $n-1 numbers since $m is not selectable
if($r >= $m) //if $r is smaller than $m we're done
$r++; //otherwise add one to $r
return($r);
}
?>
あなたの場合、n=10およびm=4の場合、1から9までの数値を生成します。それが[1,3]の範囲内にある場合、その数値を返します。[4,9]の範囲にある場合は、1を加算して、[5,10]の範囲の数値を返します。これは、同じ確率で[1,3]U[5,10]の範囲の整数を返すことを意味します。
そのようなものはどうですか?
<?php
$filtered_key = 4;
$range = range(1, 10);
unset($range[$filtered_key]);
$key = array_rand($range);
echo $key;