randomに種を仕込む
2007/07/01
どう書く?org に投稿してみました。
うゎ、スペルミスしてたorz. loosers → losers 敗者のつもりが、ゆるい人達になってしまっていた。英語力がバレてしまいました。
書いてるときに気付いたんですが、以下のファイルを用意して、
random.cl
(print *random-state*)
何度か実行してみると、
$ clisp random.cl #S(random-state #*0010111011111010100001011101100110001101110011101101011111010111) $ clisp random.cl #S(random-state #*0010111011111010100001011101100110001101110011101101011111010111) $ clisp random.cl #S(random-state #*0010111011111010100001011101100110001101110011101101011111010111)
*random-state*の初期値は変わりませんでした。
random関数は、この*random-state*を元にして疑似乱数を発生させるので、他の言語と同じように乱数は用途によっては種(seed)を仕込まないといけないようです。
HyperSpecを見ながら、試行錯誤してみた結果、*random-state*に依存しない乱数の生成は以下で良いようでした。
(random 10 (make-random-state t))