2012-11-08 53 views
0

我創建這個PHP腳本生成隨機數,但我的問題,在許多情況下,這些數字repit並沒有得到whitout repitPHP的蘭特和重複號

> <?php 
> 
> $products=array("1","2","3","4","5","6","7","8","9","10"); 
> 
> for ($i=0;$i<count($products);$i++) { 
> 
> $numbers_[$i]=rand(0,count($products)); 
> 
> if ($numbers_[$i]=="") { $numbers_[$i]="1"; } else { if 
> ($numbers_[$i]>count($products)) { $numbers_[$i]=="10"; } else { 
> 
> if ($numbers_[$i]==$numbers_[$i]) { $numbers_[$i]=="*"; } 
> 
> 
> } 
> 
> 
> } 
> 
> 
> print "".$products[$numbers_[$i]]."<br>"; 
> 
> } ?> 

不同數量的總是我需要獲得5個不同的號碼.. ...

這是我的一個問題

Thank's問候

+0

隨機數應該是隨機的,因此任何數字都可以重複或根本不顯示。如果這是一個問題,你應該解釋你正在努力完成的事情。 –

+0

只有10個數字,你會得到重複... – nickhar

回答

2

如果你是不同的號碼後,只是不停地生成隨機數UNT你會得到5個不同的。

對於您生成的每個隨機數,請檢查您的陣列以查看您是否已經擁有它。如果是這樣,不要再次將它添加到數組,並繼續生成。

PHP in_array()function可以很容易地檢查一個值是否已經在您的數組中。

2

您可以用X個可能值查詢X個隨機數。他們應該碰撞。

該代碼很難理解,但我認爲條件if ($numbers_[$i]==$numbers_[$i])總是如此。你說你需要「5」不同的數字,但代碼中沒有任何「5」,所以我可能仍然缺少一塊...

如果您嘗試隨機化$ products中元素的順序,嘗試shuffle()

要獲得N和M(N < = M)隨機使用$data=array(); for($i=N;$i<=M;++$i) $data[]=$i; $result=shuffle($data);

+0

是的,我知道洗牌,但我想嘗試與蘭特fot做到這一點,關心! –

2

之間的數字你需要 「array_rand」。

$products = array("1","2","3","4","5","6","7","8","9","10"); 
$rand_keys = array_rand($products, 5); // Get 5 Only 

然後,您可以循環返回的鍵並打印出產品編號或任何其他詳細信息。

foreach ($rand_keys as $key) { 
    echo $products[$key]; 
} 
+0

好完美我去嘗試,關心! –

+0

沒有probs。我剛剛在我的代碼中修復了一個小錯誤。現在應該可以。 – Wireblue

+0

你是怎麼過的?你找到解決方案嗎?請記住標記最能幫助你的答案。 – Wireblue