PHP 随机数与数字 (1-9) 只有 6 长度


php random number with number(1-9) only 6 length

我只想在函数中从0,1,2,3,4,5,6,7,8,9[length = 6] 6 个随机数php没有重复项。

这是我的代码

$a = mt_rand(1,9999999999); //because I need from 1 to 9999999999 of(0,1,2,3,4,5,6,7,8,9)
for ($i = 0; $i<6; $i++) 
{
   $a .= mt_rand(0,9);
}

我不确定我的代码是否是好的解决方案

我该怎么做?

试试这段代码。

function GenerateRandom($min, $max, $range) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $range);
}
print_r( GenerateRandom(0,25,6) );

希望这有帮助。

如果你的源数组相当大,你可以通过只获取你需要的东西来节省一些内存:

$a = range(0, 9);
for ($i = 0, $n = count($a); $i < 6 && --$n; ++$i) {
    $r = mt_rand(0, $n);
    if ($r != $n) {
        $tmp = $a[$n];
        $a[$n] = $a[$r];
        $a[$r] = $tmp;
    }
}
echo join(',', array_slice($a, -6));

我为此创造了"部分高德纳洗牌"一词。