首頁 >後端開發 >C++ >為什麼我的隨機數產生器會不斷產生相同的序列?

為什麼我的隨機數產生器會不斷產生相同的序列?

Patricia Arquette
Patricia Arquette原創
2024-12-09 00:01:10988瀏覽

Why Does My Random Number Generator Keep Producing the Same Sequence?

隨機數產生器重設為相同序列

每次執行使用rand() 函數的程式時,您可能會注意到它產生相同的數字序列。發生這種情況是因為隨機數產生器的種子未初始化。

要產生更不可預測的結果,請使用 srand((unsigned int)time(NULL)) 設定隨機數產生器的種子。此函數使用當前時間作為種子,為產生的數字提供更多變化。考慮以下程式碼:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int random(int low, int high) {
    if (low > high)
        return high;
    return low + (rand() % (high - low + 1));
}

int main() {
    srand((unsigned int)time(NULL));
    cout << random(2, 5) << endl;
    return 0;
}

rand() 函數本質上不是隨機的,而是利用數學變換。每次呼叫 rand() 都會根據種子或先前的隨機數產生一個結果,從而建立一個無需明確初始化的可預測序列。透過使用具有真正隨機值(例如當前時間)的 srand,隨機數產生器的狀態變得更加不可預測,從而導致更加多樣化的結果。

更多見解,請參閱這些資源:

  • http://www.dreamincode.net/forums/topic/24225-random-number- Generation-102/
  • h ttp://www.dreamincode.net/forums/topic/29294-making-pseudo-random-number-generators-more-random/

以上是為什麼我的隨機數產生器會不斷產生相同的序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn