【C++】產生指定範圍的亂數

亂數種子

rand() 會產生介於 0 到 RAND_MAX (2147483647) 之間的整數。不過你會發現,每次產生的亂數都一樣。因此我們在使用 rand() 之前,要加上 srand(time(NULL)),讓每次的亂數都不同。

srand(time(NULL));

注意:srand() 不必放入迴圈內,只需要在程式設定第一次即可。

產生 [L, R] 範圍的亂數

rand()%(R-L+1)+L

原理:rand()%5 會產生 0 到 4 之間的數字,因為如果 rand() 可以被 5 整除,餘數為 0。如果我們要產生 60 到 100 之間的數字,我們知道 rand()%41 會產生 0 到 40 之間的數字,再加上 60,就會變成 60 到 100 之間了!(41 = 100-60+1 = 60到100的個數)

程式碼

#include <cstdlib> //rand()
#include <ctime> //time()
srand(time(NULL));
cout << rand()%5; //0~4
cout << rand()%5+1; //1~5
cout << rand()%(100-60+1)+60; //60~100
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *