中的隨機數產生函式rand,random,srand,srandom的一些知識
阿新 • • 發佈:2019-01-03
1、int rand()產生一個從0到最大整數之間的一個隨機數,但是每次程式啟動後產生的隨機數在時間順序上都是一樣的。
如:
#include <stdio.h>
#include <stdlib.h>
int main(){
while(1){
int i=rand();
printf("%d\n",i);
sleep(1);
}
}
執行結果:
2、long int random()產生一個從0到最大的長整形數之間的一個隨機數。同rand一樣,它在時間順序上的排列也是一樣的。
如:
#include <stdio.h> #include <stdlib.h> int main(){ while(1){ long int i=random(); printf("%ld\n",i); sleep(1); } }
執行結果:
可以看出來,在普通的32位機上rand和random產生的隨機數是一樣的。
3、void srand(unsigned int seed)設定隨機數產生的種子,這樣每次啟動程序時產生的隨機數在時間順序上就不一樣了。
如:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ while(1){ srand(time(0)); int i=rand(); printf("%d\n",i); sleep(1); } }
執行結果:
4、void srandom(unsigned int seed)和srand的作用幾乎相同。
總之:使用的rand或者random之前,一般使用time(0)getpid()設定隨機種子.否則預設種子就是1,則每次產生的隨機數在時間順序上是一樣的。