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用乱数モナド