2014-12-02 123 views
0

我的應用程序中有一個CodeIgniter控制器(application/controllers/random_number.php),它應該生成一個隨機數(echo rand();)。rand()在快速AJAX調用後返回相同的數字

現在,我遇到的問題是,當我向該控制器調用HTTP請求時,似乎它實際上每秒鐘只實際生成一個新數字,因此如果我在內部調用多個請求時返回相同的數字那個時間表。如果我運行一個for循環來回顯多個隨機數,那麼rand()會返回不同的數字,就像它應該返回的那樣(並且返回同一組數字直到第二個數字已經過去)。

爲什麼這樣做,我該怎麼辦才能修復它?

我在Windows 7 Home Premium(32位)上使用CodeIgniter 2.1.3,PHP 5.5.12和Apache/2.4.9。

編輯:這不是一個網頁緩存問題。我已經添加了一個小部分,將數字保存到數據庫中,並且證明它是應用程序正在這樣做,而不是瀏覽器。

http://puu.sh/deoWI/30cf5083e9.png

+0

那是因爲rand()使用時間作爲種子。嘗試mt_rand() – DarkBee 2014-12-02 20:05:14

+1

@DarkBee它的工作原理!非常感謝。 – Ivan 2014-12-02 20:07:23

+0

我會添加它作爲答案,但我的解釋有點簡單 – DarkBee 2014-12-02 20:12:05

回答

2

的這裏的問題是,rand()依賴於時間的播種機制,因此不產生新的隨機數的速度不夠快。

改爲使用mt_rand