#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv) {
srand(time(NULL));
int r = rand();
printf("%d\n", r);
return (EXIT_SUCCESS);
}
當我在幾秒鐘的空間反覆運行該代碼片段,我得到越來越系列214193875號,如213252683,213975384,中,214445980.看樣子對我來說就像我只是打印出系統時間一樣 - 當我添加printf("%d\n", time(NULL))
行時,似乎證實了這一假設;到代碼。我究竟做錯了什麼?我在Mac OS X 10.6.1(雪豹)上運行,但我只使用標準庫函數,所以它不應該有所作爲。謝謝!簡單的隨機數生成器不工作
看看第二個電話到蘭特()返回。另外,請參閱http://linux.die.net/man/3/rand,因爲它討論了僞隨機數生成器的示例實現。 – Chris
僞隨機數發生器的基本規則:種子一次,產生很多次。如果您繼續重新播種它不起作用。 –
@Chris:根據需要,第二次調用rand()似乎正在生成PSRN。我非常驚訝第一個電話的行爲! – Gautam