如何於C內輸出一個隨機數
如何於C內輸出一個隨機數
參考以下的程式碼,以下是隨機產生一個由1至3之間整數(即1、2或3)的寫法,產生後的數值貯存於變數(variable) a內,然後輸出至螢幕上。每次執行時a的值可能不同。
說明: 留意多了甚麼語句! 行2、3、7及8是必需的。
|
行 |
|
|
2 |
由於要使用rand()及srand()這兩個函數指令,這兩個函數位於stdlib.h內,因此要先載入。 |
|
3 |
由於要使用time()這個函數指令,這個函數位於time.h內,因此要先載入。 |
|
7 |
使用time()取得一個時間數值,用以作為產生亂數的種子,並根據這亂數種子,使用srand()產生亂數。 |
|
8 |
讀取之前產生的亂數(是一個很長有小數點的數值),然後按需要產生相應範圍內的亂數。rand()%3是把亂數除3,得出餘數(即0、1或2),再加1,那便可產生1、2或3的數值。 |
試試看: 如想產生一個由1-10之間的亂數,該如何修改以上的程式?
補充:
- 實際上,使用電腦產生一個真正隨機的數字,並不是一件簡單的事,還不如用手抽波波隨機。電腦始終是一台計算機,祗能按指定的數學公式計算結果,既然是數學公式,正常來說,輸入相同數據的話,便祇能產生相同的結果。有些聰明人,想出一些算法,可根據一個數字(稱為亂數種子)產生不同的結果,但這仍然是可預測的,並不是真正的隨機亂數。
重要提示: 如產生亂數的指令在迴圈內的話,那srand(time(NULL));這指令放在迴圈外,如下:
如放於迴圈內的話,會出現以下狀況,輸出的所謂隨機數是一樣的。