Haskellで乱数
- こんな記事があって、Haskellでの乱数発生はいろいろあることがわかる
- mwc-randomはかなり速いし、これを使っておけばよいのでは?という結論
- そのmwcは昨日の記事でも使われていた
- 簡単に言うと、乱数を使う処理は何度もせずに一度に済ませることにする
- そのためにRandTと言う「乱数をするのは後回し」という仕組みで、乱数を使う処理をすべて包んでおいて
- 最後に
mwc ....
- とやって、乱数生成して、値を入れ込みましょう、という作り
- 計算機システムから種を拾ってくるらしい
- これを使うと
import Math.Probable import qualified Data.Vector.Unboxed as VU mwc $ listOf 100 double
- とするだけで100個のダブル乱数が作れる
- ちなみにこのdoubleもMath.probableでできていて
:t double
RandT m Double
- という、RandTに包まれた、Double用乱数モナド