名前空間
変種
操作

std::srand

From cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
ヘッダ <cstdlib> で定義
void srand( unsigned seed );

std::rand() で使用される擬似乱数ジェネレータを seed の値で初期化します。

srand() を呼び出す前に std::rand() が使用された場合、std::rand()srand(1) で初期化されたかのように動作します。

std::rand() が同じ seed で初期化されるたびに、同じ値のシーケンスを生成しなければなりません。

srand() はスレッドセーフであることが保証されていません。

目次

[編集] パラメータ

seed - シード値

[編集] 戻り値

(なし)

[編集] 注意

一般的に、擬似乱数ジェネレータはプログラムの開始時に、rand() の呼び出しの前に、一度だけ初期化されるべきです。繰り返し初期化したり、新しい擬似乱数のバッチを生成したいごとに再初期化したりしないでください。

std::time(0) の呼び出し結果をシードとして使用するのが標準的な方法です。しかし、std::timestd::time_t 型の値を返しますが、std::time_t は整数型であることが保証されていません。しかし実際には、主要な実装のすべてが std::time_t を整数型として定義しており、POSIX もこれを要求しています。

[編集]

#include <cstdlib>
#include <ctime>
#include <iostream>
 
int main() 
{
    std::srand(std::time(0)); // use current time as seed for random generator
    std::cout << "Random value on [0, " << RAND_MAX << "]: " << std::rand() << '\n';
}

実行結果の例

Random value on [0, 2147483647]: 1373858591

[編集] 関連項目

擬似乱数を生成する
(関数) [編集]
std::randによって生成される最大値
(マクロ定数) [編集]
スレッド毎の乱数エンジンを再シードする
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)