srand
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <stdlib.h> で定義
|
||
void srand( unsigned seed ); |
||
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 <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(0)); //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