std::srand

從 cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
在標頭 <cstdlib> 定義
void srand( unsigned seed );

以值 seed 播種 std::rand() 所用的隨機數生成器。

若在對 srand() 的任何調用前使用了 std::rand(),則 std::rand() 表現為如同它被以 srand(1) 播種。

每次以同一 seed 播種 std::rand() 時,它必須產生相同的值數列。

srand() 不保證為線程安全。

目錄

[編輯] 參數

seed - 種子值

[編輯] 返回值

(無)

[編輯] 註解

通常來說,應該只播種一次隨機數生成器,在程序開始時,對 rand() 的任何調用前進行。 不應重複播種,或每次冀願生成新一批隨機數時進行重播種。

標準實踐是使用調用 std::time(0) 的結果為種子。 然而 std::time 返回的是 std::time_t 值,而 std::time_t 不保證是整數類型。 不過,實踐中各主要實現都把 std::time_t 定義為整數類型,且此亦為 POSIX 所要求。

[編輯] 示例

#include <cstdlib>
#include <ctime>
#include <iostream>
 
int main() 
{
    std::srand(std::time(0)); // 以当前时间为随机数生成器的种子
    std::cout << "[0, " << RAND_MAX << "] 上的随机数值: " << std::rand() << '\n';
}

可能的輸出:

[0, 2147483647] 上的随机数值: 1373858591

[編輯] 參閱

生成偽隨機數
(函數) [編輯]
std::rand 生成的最大可能值
(宏常量) [編輯]
重播種單個線程的隨機引擎
(函數) [編輯]
srand 的 C 文檔