名前空間
変種
操作

std::srand

提供: cppreference.com
< cpp‎ | numeric‎ | random
 
 
数値演算ライブラリ
一般的な数学関数
特殊な数学関数 (C++17)
数学定数 (C++20)
浮動小数点環境 (C++11)
複素数
数値配列
擬似乱数生成
コンパイル時有理数算術 (C++11)
数値演算アルゴリズム
(C++17)
(C++17)
補間
(C++20)
(C++20)
汎用の数値演算
(C++11)
(C++17)
ビット操作
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
擬似乱数生成
一様ランダムビットジェネレータ
エンジンとエンジンアダプタ
非決定的なジェネレータ
分布
一様分布
ベルヌーイ分布
ポアソン分布
正規分布
標本分布
シードシーケンス
(C++11)
C のライブラリ
srand
 
ヘッダ <cstdlib> で定義
void srand( unsigned seed );

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

いかなる srand() の呼び出しよりも前に rand() が使用された場合、 rand()srand(1) によってシードされたかのように動作します。

同じ seed を使用して rand() がシードされるたびに、連続する呼び出しに対して同じ値のシーケンスを生成しなければなりません。

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

目次

[編集] 引数

seed - シード値

[編集] 戻り値

(なし)

[編集] ノート

一般的に擬似乱数ジェネレータは、プログラム開始時にいかなる rand() の呼び出しよりも前に、一度だけシードするべきです。 繰り返しシードしたり、新しい乱数の束を生成したいときに毎回再シードしたりするべきではありません。

標準的な慣習では time(0) の呼び出しの結果をシードとして使用します。 しかし、 time()time_t の値を返し、 time_t は整数型であることは保証されていません。 とはいえ、実際のところ、すべてのメジャーな処理系は time_t を整数型として定義しており、これは POSIX が要求していることでもあります。

[編集]

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

出力例:

Random value on [0 2147483647]: 1373858591

[編集] 関連項目

擬似乱数を生成します
(関数) [edit]
std::rand によって生成可能な最大値
(マクロ定数) [edit]
スレッドごとのランダムエンジンを再シードします
(関数) [edit]