目錄
- 1.
rand()
函式 - 2.
srand()
函式 - 3.
rand()
和srand()
的配合使用 - 4. 小結
rand()
和 srand()
是 C++ 中用於生成隨機數的函式。它們定義在 <cstdlib>
標頭檔案中,並且在 C 語言中也有相同的用法。
1. rand()
函式
- 功能:
rand()
函式用於生成一個範圍在0
到RAND_MAX
之間的隨機整數,其中RAND_MAX
是一個常量,通常定義為32767
(但這個值可能因系統不同而有所變化)。 - 用法:
int rand();
- 返回值:
rand()
返回一個偽隨機整數。
示例:
#include <iostream>
#include <cstdlib> // 包含 rand 和 srand 函式
using namespace std;
int main() {
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
上面的程式碼會輸出 5 個隨機整數。
2. srand()
函式
- 功能:
srand()
函式用於為rand()
函式設定一個種子值。這個種子值決定了rand()
函式生成的隨機數序列。 - 用法:
void srand(unsigned int seed);
- 引數:
seed
是一個無符號整數,用作隨機數生成器的種子。 - 注意事項: 如果你不呼叫
srand()
來設定種子,那麼rand()
每次執行時都會生成相同的隨機數序列,因為預設的種子是固定的。如果想要每次執行程式時生成不同的隨機數,可以將srand()
的引數設定為time(0)
,這是當前時間的秒數。
示例:
#include <iostream>
#include <cstdlib>
#include <ctime> // 包含 time 函式
using namespace std;
int main() {
srand(time(0)); // 使用當前時間作為隨機數生成的種子
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
這段程式碼將生成每次執行都不同的隨機數。
3. rand()
和 srand()
的配合使用
- 通常在程式開始時呼叫
srand()
來設定種子,然後在需要隨機數的地方呼叫rand()
。 - 若多次呼叫
srand()
,每次種子值相同,則產生的隨機數序列也相同。
示例:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(12345); // 設定固定的種子
cout << "固定種子:" << endl;
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
srand(time(0)); // 使用當前時間作為種子
cout << "時間種子:" << endl;
for (int i = 0; i < 5; ++i) {
cout << rand() << endl;
}
return 0;
}
這段程式碼首先會輸出一組固定的隨機數(因為 srand(12345)
),然後輸出一組不同的隨機數(因為 srand(time(0))
使用了當前時間作為種子)。
4. 小結
rand()
用於生成偽隨機數。srand()
用於設定生成偽隨機數的種子。- 若不呼叫
srand()
或使用相同的種子,rand()
每次生成的隨機數序列相同。 - 通常透過
srand(time(0))
來生成不同的隨機數序列。
這就是 rand()
和 srand()
在 C++ 中的基本用法及其配合使用的詳細解析。