名前空間
変種
操作

std::srand

提供: cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
擬似乱数生成
エンジンとエンジンアダプタ
Original:
Engines and engine adaptors
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ジェネレータ
Original:
Generators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ディストリビューション
Original:
Distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
一様分布
Original:
Uniform distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ベルヌーイ分布
Original:
Bernoulli distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ポアソン分布
Original:
Poisson distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
正規分布
Original:
Normal distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
サンプリング分布
Original:
Sampling distributions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
シードシーケンス
Original:
Seed Sequences
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
(C++11)
Cライブラリ
Original:
C library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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]