1. 程式人生 > >中的隨機數產生函式rand,random,srand,srandom的一些知識

中的隨機數產生函式rand,random,srand,srandom的一些知識

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,則每次產生的隨機數在時間順序上是一樣的。