srandとシードの問題点
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/10 16:30 UTC 版)
「rand」の記事における「srandとシードの問題点」の解説
srand()にtime()等で得た現在時刻 (秒単位) を渡して初期化する方法はよく見かけるが、srandの実装によってはシード値が近いとrandによって生成される乱数も相関性の高い値が出力されるものがある。つまり下記例のような実装方法を採るプログラムを起動してから数秒後に同じプログラムを起動すると最初のうちは同じ乱数列を得る可能性が高い。これを回避するためにはtimeで得た値をハッシュ関数に通してからsrandに渡す、もしくはsrandを呼び出した後のrandは数十〜数百回読み飛ばすなどの対策が必要である。また言うまでもなく同じロジックを採用したプログラムが同一時刻に起動されるなどしてsrandが同一の値で初期化された場合は以降全く同じ乱数列を得ることになる。
※この「srandとシードの問題点」の解説は、「rand」の解説の一部です。
「srandとシードの問題点」を含む「rand」の記事については、「rand」の概要を参照ください。
- srandとシードの問題点のページへのリンク