PHP随机数功能 - 防止重复数字

时间:2014-03-03 14:24:23

标签: php random

我正在使用PHP rand函数生成1到6之间的数字并执行三次这样的操作:

echo rand(1, 6);
echo "<br>";
echo rand(1, 6);
echo "<br>";
echo rand(1, 6);
echo "<br>";

有没有办法防止同一个数字出现在3个随机数中的任意一个?

5 个答案:

答案 0 :(得分:5)

$random = range(1,6);
shuffle($random);
echo $random[0];
echo "<br>";
echo $random[1];
echo "<br>";
echo $random[2];

$input = range(1,6);
$random = array_rand($input);
echo $input[$random[0]];
echo "<br>";
echo $input[$random[1]];
echo "<br>";
echo $input[$random[2]];

答案 1 :(得分:1)

试试此代码

<?php   

$out = array(); // We place generated values here
for ($i=0;$i<3;$i++ ) // 3 id the count of numbers
{
    $r = rand(1,6);
    while (in_array($r, $out)) { // if rand is already used then new rand
        $r = rand(1,6);
    }
    echo $r.'<br />';
    $out[] = $r;
}
 ?>

答案 2 :(得分:0)

$random = rand(1,6);
$random2 = rand(1,6);
while($random2==$random){
    $random2 =rand(1,6);
}
$random3 = rand(1,6);
while($random3==$random||$random3==$random2){
    $random3=rand(1,6);
}
echo $random."<br>";
echo $random2."<br>";
echo $random3."<br>";

答案 3 :(得分:0)

你使用range(),array_shift()和shuffle()函数来获得你想要的东西

$arr = range(0, 6);
shuffle($arr);

echo array_shift($arr);
echo array_shift($arr);
echo array_shift($arr);
echo array_shift($arr);

答案 4 :(得分:0)

$ar = range(1,6);
shuffle($ar);
echo implode('<br>', array_slice($ar,0,3)) . '<br>';