我們平時在做一些分析數據的時候經常會用到隨機數,我們知道,隨機數是一個設備,在利用這個設備生成隨機數時,需要提供一個種子,如果我們不提供,那麼默認會提供一個為1的種子,這時,隨機數生成器生成的並不是真正意義上的隨機數,因為每次那些隨機數都是相同的,例如下面的這個例子:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void print_rand();
int main(void)
{
print_rand();
printf("\n");
}
void print_rand()
{
int a[10], i;
for(i = 0; i < 10; i++)
{
a[i] = rand()%100;
}
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}
現在,我把程序改動如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void print_rand();
int main(void)
{
print_rand();
printf("\n");
}
void print_rand()
{
int a[10], i;
srand(time(NULL));
for(i = 0; i < 10; i++)
{
a[i] = rand()%100;
}
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void print_rand();
int main(void)
{
print_rand();
printf("\n");
}
void print_rand()
{
int a[10], i;
srand(time(NULL));
for(i = 0; i < 10; i++)
{
a[i] = rand()%100;
}
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}
從兩次執行的程序可以看出,第一個程序得到的輸出都是一樣的,因為種子沒有變,始終是1,第二個程序輸出的每一次都不一樣,因為,我用到了這個函數:
srand(time(NULL));
srand(time(NULL)); 這個函數是為 rand()提供種子的,為了使每次提供的種子都不一樣,我把時間作為參數提供給函數,由於時間肯定是每次都不同的,所以,這樣得到的才是真正意義上的隨機數。