阿摩線上測驗 登入

申論題資訊

試卷:99年 - 099年警察人員及99年交通事業鐵路人員員級_資訊處理#34123
科目:程式設計
年份:99年
排序:0

題組內容

四、回答下列問題:(每小題 5 分,共 25 分)

申論題內容

⑷利用 rand()函式(rand()是一個亂數產生函式,回傳值為介於 0 到 32767 之間的正 整數),寫出如何模擬擲出一個骰子所出現點數的一行敘述(one statement)?

詳解 (共 1 筆)

詳解 提供者:hchungw

在C或C++中,使用rand()函式可以產生一個隨機整數,這個整數的範圍從0到RAND_MAX。RAND_MAX至少是32767。若要模擬擲出一個六面骰子的結果,我們需要將rand()函式的返回值限制在1到6之間。這可以通過取rand()返回值除以6的餘數,然後加1來實現,因為餘數將會在0到5之間,加1後就會是1到6之間的一個數字。這裏是實現這一操作的一行敘述:
cpp
Copy code
int diceRoll = (rand() % 6) + 1;
這行代碼會產生一個1到6之間的隨機數字,模擬擲骰子的結果。注意,使用rand()之前,通常需要先調用srand()函式來設置隨機數生成器的種子,這樣每次程序運行時產生的隨機數序列才會不同。一種常見的做法是使用當前時間作為種子:

#include <cstdlib> // 對於rand(), srand()
#include <ctime>   // 對於time()
srand(time(0)); // 使用當前時間作為種子
int diceRoll = (rand() % 6) + 1; // 擲骰子
這段代碼應該放在程序的開始處,以確保srand()只被調用一次。