2011-04-19 42 views
0

我一直在使用mt_rand(10,100)得到10到100之間的隨機數,但它每次都給我74。破碎的隨機PHP

繼承人什麼IM與

$success=mt_rand(10,100); 

任何想法的工作?我需要種子嗎?提前致謝。

---編輯---

我剛纔想這

srand(microtime()); 
    $success=rand(10,100); 

每次仍然給相同的答案,47

---編輯---

這是整件事

srand(microtime()); 
$success=rand(10,100); 
echo $success; 
if ($success == 100) { 
    $displayline="You succeeded"; 
    session_register("displayline"); 
    header("location:userhome.php"); 
} 
+0

您可能需要顯示更多代碼。正如我在循環中運行它,並按預期收到許多不同的隨機數。事實上,在50的循環中,我沒有收到1'74'。這是在PHP 5.3上 – 2011-04-19 19:25:21

+2

您使用的是哪個版本的PHP?你是否手動給發生器播種? – NikiC 2011-04-19 19:25:31

+0

即時通訊使用PHP 5.2 – Trent 2011-04-19 19:28:55

回答

1

您運行的是哪個版本的PHP?在4.2.0中,mt_rand()被更改爲自動播種。

您可以使用mt_srand($ seed)對其進行種子處理,從而提供種子值。我使用microtime()函數的輸出。

編輯:由於你在5.2上,請檢查你的代碼,看看是否正在調用mt_srand()並註釋掉所有這些調用。

+0

我使用的是php 5。2 – Trent 2011-04-19 19:30:54

+0

@Trent:你有絕對的把握嗎,你是否會**生成發電機? – NikiC 2011-04-19 19:35:09

+0

是的,我試過播種,而不是播種。沒有不同。 – Trent 2011-04-19 19:37:38

0

這很奇怪。如果你只是做mt_rand()你會得到什麼? mt_getrandmax()的價值是多少?

嘗試mt_srand()

0

刪除所有的秧苗功能,不增加他們回來,然後重新啓動服務器。

此外,我發現this PHP bug,它發生在Windows系統與一些版本的php.ini文件。

+0

@Trent你知道是什麼原因造成的嗎? – 2011-04-28 22:55:47