C++(rand()、srand())

做梦当财神發表於2024-08-20

目錄
  • 1. rand() 函式
  • 2. srand() 函式
  • 3. rand()srand() 的配合使用
  • 4. 小結



rand()srand() 是 C++ 中用於生成隨機數的函式。它們定義在 <cstdlib> 標頭檔案中,並且在 C 語言中也有相同的用法。



1. rand() 函式

  • 功能: rand() 函式用於生成一個範圍在 0RAND_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++ 中的基本用法及其配合使用的詳細解析。

相關文章