如果我的下拉列表中有10个选项可供选择,并且选择了选项4,那么如何编写代码以从1-10中选择一个选项,包括4?
我知道rand(1,10)从1到10选择一个随机数,但它有时会落在4上。我怎样才能确保它不会选择数字4或任何已经选中的数字?
答案 0 :(得分:2)
通常,如果您有1和n之间的选项并且选择了第m个选项,则可以使用以下算法在1到n之间随机均匀生成数字,但不包括m:
<?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]中的任何整数。
答案 1 :(得分:1)
那样的事情呢?
<?php
$filtered_key = 4;
$range = range(1, 10);
unset($range[$filtered_key]);
$key = array_rand($range);
echo $key;