產生亂數最基本的方法,是使用 stdlib.h 當中的 rand 函式, 該函式會產生一個 0 到 RAND_MAX 之間的整數(RAND_MAX 的值,定義在 stdlib.h 當中), 以下範例會產生 10 個亂數,並且顯示出來:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
	int i;
	for(i=1;i<=10;i++){
		printf("%d ", rand());
	}
	printf("\n");
	return 0;
}

在不同的電腦上,可能會得到不同的執行結果。但若是執行了兩次以上,你會發現印出來的值並沒有改變, 這是因為 rand 函式只能產生虛擬亂數,儘管重複呼叫時,看起來會出現隨機的數列, 但是當程式重新執行時,會發現數列一模一樣。 這時,我們需要一個亂數種子,讓每次的順序盡可能不同。 如果種子值相同的話,亂數順序仍然會相同,所以通常會使用電腦目前的時間來做為種子。 修改後的範例如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
	int i;

	srand( time(NULL) );
	for(i=1;i<=10;i++){
		printf("%d ",rand());
	}
	printf("\n");
	return 0;
}
我們用 time.h 中的 time 函式來取得系統時間。 呼叫「time(NULL);」時,會取得 1970/01/01 00:00 到目前為止的秒數,丟給 srand 函式做為種子的設定。

如果希望亂數產生在特定範圍內,則可使用餘數、加減等方法,對其進行平移。 將範例再次修改,使其能模擬丟骰子十次:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
	int i;

	srand( time(NULL) );
	for(i=1;i<=10;i++){
		printf("%d ", 1+rand()%6 );
	}
	printf("\n");
	return 0;
}