在devc++4.9.9.2 編譯通過
#include<stdlib.h>
#include<time.h>
int main()
{
int i,stime;
srand((unsigned)time(NULL));
printf("Ten random numbers form 0 to 1000!\n");
for(i=0;i<10;i++)
printf("%d\t",rand()%1000);
printf("\n");
}
rand(void)用于產(chǎn)生一個(gè)偽隨機(jī)unsigned int 整數(shù)。srand(seed)用于給rand()函數(shù)設(shè)定種子。 |
于是我把它貼到機(jī)器上, 做了一個(gè)10次循環(huán), 沒想到每次都生成一摸一樣的10個(gè)數(shù), 百思不得其解。。。。。。。。
最后終于弄明白了, 用現(xiàn)在的時(shí)間做種, 而time函數(shù)返回值是以秒為單位的, 10個(gè)循環(huán)當(dāng)然在1秒以內(nèi)。。。。。。所以才會(huì)有這個(gè)結(jié)果
BTW, Dev-c++ 4.9.9.2 can not support randomize() & random(int num);
some body saying: "
srand() 是用來初始化隨機(jī)種子數(shù)的,因?yàn)椋颍幔睿涞膬?nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過是因?yàn)槠渲芷谔貏e長,所以有一定的范圍里可看成是隨機(jī)的,式子如下 rand = rand*const_1 + c_var;srand函數(shù)就是給它的第一個(gè)rand值。 用 int x = rand() % 100;來生成 0 到 100 之間的隨機(jī)數(shù)這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0)) // 產(chǎn)生一個(gè)0到n之間的隨機(jī)數(shù)
|
"
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。