2015-06-12 36 views
-2

我一直在嘗試使用程序代碼生成不同的隨機數。但我沒有做到這一點。在這方面請幫助我。提前致謝。使用程序代碼生成不同的隨機數

<?php 

$rnd_array = array(0,0,0,0,0,0,0,0,0,0); 
$a = 1; 
for ($i=0; $a <= 10 ; $i++) 
{ 
    echo $rnd = rand() % 10; 
    echo "\t \t"; 

    for ($j=0; $j < 10 ; $j++) 
    { 
     if ($rnd == $rnd_array[$j]) 
     { 
      $flag = true; 
      break; 
     } 
     else 
     { 
      $flag = false; 
     } 
    } 
    if ($flag == false) 
    { 
     $rnd_array[$a] = $rnd; 
     $a++; 
    } 
} 

echo "<br> <br>"; 

for ($k=0; $k < 10 ; $k++) 
{ 
    echo $rnd_array[$k]; 
    echo "\t \t"; 
} 
?> 
+0

所以你只是想11隨機數字,沒有重複? (順便說一句:你現在正在試圖創建11個隨機數,可以在0-9之間,當你試圖讓它們沒有重複時,這將是非常困難:) – Rizier123

+0

問題是如果它發現相同的數字然後它跳過數組的索引並顯示初始值0. –

+0

@WebPlayers請詳細解釋一下,您正在嘗試存檔的是什麼以及您的預期輸出是什麼! – Rizier123

回答

0

10 distincts隨機數

<?php 

$numbers = array(); 
$i = 0; 

while($i < 10){ 
    $new = rand(); 
    $known = false; 
    foreach($numbers as $key => $value){ 
     if($value == $new){ 
      $known = true; 
      break; 
     } 
    } 
    if(!$known){ 
     $numbers[$i]=$new; 
     $i++; 
    } 


} 

var_dump($numbers); 

?> 
+0

非常感謝。你一直很有幫助。 –

1

我會用一個稍微不同的邏輯 - 開始與空數組,生成一個隨機數,把它放入數組,如果數組沒有包含它。重複,直到你的數組包含儘可能多的元素,你想要它。

下面是一個簡單的例子:

$num = 10; 
$min = 1; 
$max = 100; 

$array = []; 
while (count($array) < $num) { 
    $random = mt_rand($min, $max); 
    if (!in_array($random, $array)) { 
     $array[] = $random; 
    } 
} 
0

因爲陣列的長度等於生成的隨機值的範圍

$rnd_array = range(0,9); 
shuffle($rnd_array); 

print_r($rnd_array); 

Array 
(
    [0] => 9 
    [1] => 0 
    [2] => 5 
    [3] => 3 
    [4] => 6 
    [5] => 4 
    [6] => 2 
    [7] => 7 
    [8] => 1 
    [9] => 8 
) 
+0

@WebPlayers只要我們不知道你在做什麼,爲什麼不能修復你的代碼.. – Rizier123

+0

@Web Players 1st for for change $ a to $ i'for($ i = 0; $ i <= 10; $ i ++)' – splash58