下面是我用來練習使用rand()函數的示例程序。C編程 - rand()的奇怪輸出
最奇怪的是,每次運行程序時,rand()(程序輸出中的rand [0])生成的第一個數字都是SIMILAR。這是不一樣的,但數字總是比上一次生成時略大。蘭特[1-4]似乎是可以接受的隨機然而。任何人都可以解釋發生了什麼,爲什麼?
看看這個示例輸出:
[[email protected] C] $ ./a.out
rand[0]= 277735441 <<<??????
rand[1]= 1417591956
rand[2]= 1284424674
rand[3]= 819876274
rand[4]= 1405457966
[[email protected] C] $ ./a.out
rand[0]= 277769055 <<<???????
rand[1]= 1982542454
rand[2]= 234757526
rand[3]= 642279943
rand[4]= 1546192179
[[email protected] C] $ ./a.out
rand[0]= 277785862 <<<???????
rand[1]= 117534056
rand[2]= 1857407599
rand[3]= 1627223601
rand[4]= 542817462
的源代碼:
/*
* rand: Generates 5 numbers using standard "srand()/rand()" function
*
* SAMPLE OUTPUT:
* rand[0]= 824522256
* rand[1]= 1360907941
* rand[2]= 1513675795
* rand[3]= 1046462087
* rand[4]= 253823980
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
main (int argc, char *argv[])
{
/* Simple "srand()" seed: just use "time()" */
unsigned int iseed = (unsigned int)time(0);
srand (iseed);
/* Now generate 5 pseudo-random numbers */
int i;
for (i=0; i<5; i++)
{
printf ("rand[%d]= %u\n",
i, rand());
}
return 0;
}
'蘭特'是相當糟糕和破碎。我的理解是,這是爲了一堂課或其他事情。如果有一天你真的需要使用僞隨機數,你應該嘗試找到另一個庫。 – zneak