Namespaces
Variants

std:: srand

From cppreference.net
ヘッダーで定義 <cstdlib>
void srand ( unsigned seed ) ;

std::rand() で使用される擬似乱数生成器を値 seed で初期化します。

std::rand() srand() の呼び出しより前に使用された場合、 std::rand() srand ( 1 ) でシードされたかのように動作します。

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

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 << "Random value on [0, " << RAND_MAX << "]: " << std::rand() << '\n';
}

出力例:

Random value on [0, 2147483647]: 1373858591

関連項目

擬似乱数を生成する
(関数)
std::rand によって生成される最大値
(マクロ定数)
スレッドごとの乱数エンジンを再シードする
(関数)