std::srand
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <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 が要求していることでもあります。
例
Run this code
#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
関連項目
| 擬似乱数を生成します (関数) | |
| std::rand によって生成可能な最大値 (マクロ定数) | |
| スレッドごとのランダムエンジンを再シードします (関数) | |
srand の C言語リファレンス
| |