1. 程式人生 > >在C語言中如何產生隨機數

在C語言中如何產生隨機數

簡單的產生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標頭檔案將在下一篇部落格中對它進行簡介。