在C語言中如何產生隨機數
阿新 • • 發佈:2019-01-01
簡單的產生0~100隨機數的程式碼如下:
#include<stdio.h>
#include<time.h>
void main()
{
int i=0,j=0;
int p;
srand(time(NULL));//產生時間種子
p=rand()%100+1;//生成隨機數
printf("%d\t",p);
printf("\n");
}
在上面這段程式碼中我們可以看出使用了三個函式,分別是srand,rand和time函式。
srand()的作用是提供一個種子,它的函式格式為void srand(unsigned int seed)。這裡的seed我們把它稱做時間種子,如果沒用srand的作用,時間種子則是不改變的,從而rand()產生的隨機數則始終不發生改變。
然後呼叫rand(),其格式為int rand(void)。它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間),我們可以根據自己的需要通過運算來改變範圍。
time()函式的作用則是產生一個正整數,這個正整數是1970年1月1日00:00:00開始,到目前為止經過的秒數。這裡我們不免要擔心一下產生正整數的大小,事實上是多慮了。int型變數的極限2147483647所在的時間為2038-01-19 11:14:7。所以我們不需要為此而煩惱。並且現在的time_t結構體為signed int 32,即32位。伴隨著升級為64位便可以解決這個問題。
關於time.h標頭檔案將在下一篇部落格中對它進行簡介。