名前空間
変種
操作

srand

From cppreference.com
< C言語‎ | 数値‎ | 乱数
ヘッダー <stdlib.h> で定義
void srand( unsigned seed );

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

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

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

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

目次

[編集] 引数

seed - シード値

[編集] 戻り値

(なし)

[編集] 注意

一般的に、擬似乱数生成器はプログラムの開始時に、`rand()` を呼び出す前に一度だけ初期化するべきです。新しい擬似乱数のバッチを生成したいときに毎回再初期化するべきではありません。

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

[編集]

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    srand(time(NULL)); //use current time as seed for random generator
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

実行結果の例

Random value on [0 2147483647]: 1373858591

[編集] 参考文献

  • C17標準 (ISO/IEC 9899:2018)
  • 7.22.2.2 srand 関数 (p: 252-253)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.22.2.2 srand 関数 (p: 346-347)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.20.2.2 srand 関数 (p: 312-313)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.10.2.2 srand 関数

[編集] 関連項目

擬似乱数を生成する
(関数) [編集]
rand() が生成する可能性のある最大値
(マクロ定数) [編集]
English 日本語 中文(简体) 中文(繁體)