乱数:メルセンヌツイスター
参考にさせていただいたページ。
http://sicp.g.hatena.ne.jp/hyuki/20060503/mt
systime使っているけどメルセンヌツイスターになっているのだろうか?
僕にはよーわかりません。
gosh> (use math.mt-random) #<undef> gosh> (define mt (make <mersenne-twister> :seed (sys-time))) mt gosh> (mt-random-integer mt 1000) 430 gosh> (mt-random-integer mt 1000) 39
思ったよりずっとあっさり出来てしまった。
ついでに剰余も
gosh> (modulo (mt-random-integer mt 100) 24) 15 gosh> (modulo (mt-random-integer mt 100) 24) 0 gosh> (modulo (mt-random-integer mt 100) 24) 19
考えてみれば剰余はいらないことに気がつく(Cの癖が出てしまった)。
gosh> (modulo (mt-random-integer mt 100) 24)
とするぐらいなら
gosh> (mt-random-integer mt 24)
とすればいいのでした。