我只想在[length = 6]
函数中0,1,2,3,4,5,6,7,8,9
只有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);
}
我不确定我的代码是不是很好的解决方案
我怎么做?
答案 0 :(得分:1)
试试这段代码。
function GenerateRandom($min, $max, $range) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $range);
}
print_r( GenerateRandom(0,25,6) );
希望这有帮助。
答案 1 :(得分:1)
如果您的源数组相当大,您可以通过仅获取所需内容来节省一些内存:
$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));
我正在创造一个术语&#34; Partial Knuth Shuffle&#34;对此。