2014-03-03 65 views
0

我使用PHP rand函數生成1到6之間的數字,做了三次這樣的:PHP RAND碼功能 - 防止重複號碼

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

有沒有一種方法,以防止相同數目從出現在任何3個隨機數中?

回答

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]]; 
+0

'echo implode(「\ n」,$ random)。 「\ n」;'? ; P – kojiro

+0

如果他們想要所有這些,肯定 –

+0

你最好使用'array_shift',這樣你就不必關心索引了。 –

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; 
} 
?> 
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>"; 
0

您使用範圍(),array_shift()和隨機播放()函數來得到你想要的

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

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