% Variable *RANDOM-STATE*
Variable *RANDOM-STATE*
乱数状態
実装依存
現在の乱数状態として使用されます。
例えば、関数random
では乱数状態を明に指定しないときに使用されます。
(random-state-p *random-state*) => true
(setq snap-shot (make-random-state))
;; この列はどの時点においてもランダムですが、
;; ある時点でやり直したときは同じ列を取得できます。
(list (loop for i from 1 to 10 collect (random))
(let ((*random-state* snap-shot))
(loop for i from 1 to 10 collect (random)))
(loop for i from 1 to 10 collect (random))
(let ((*random-state* snap-shot))
(loop for i from 1 to 10 collect (random))))
=> ((19 16 44 19 96 15 76 96 13 61)
(19 16 44 19 96 15 76 96 13 61)
(16 67 0 43 70 79 58 5 63 50)
(16 67 0 43 70 79 58 5 63 50))
実装。
random
make-random-state
,
random
,
random-state
*random-state*
を
正しく保存された別の乱数状態オブジェクトに束縛すると
古い乱数状態オブジェクトが復元されます。