Haskell gsl-random - 如何指定 RNGType?

Haskell gsl-random - how to specify RNGType?

我正在尝试使用 gsl-random 将 GSL 绑定到在 haskell 中工作的分布采样器。我知道有 random-fu 作为更高级别的选项,但我发现 random-fu 对于我的目的来说太慢了。

假设我想从 beta 分布中抽样。基于 Hackage 文档的类型规范是:

   getBeta :: RNG -> Double -> Double -> IO Double

我需要一个 RNG 对象,它来自 MkRNG

   newRNG :: RNGType -> IO RNG

如何指定 RNGType?

λ> :i RNGType
newtype RNGType
  = gsl-random-0.5.0:GSL.Random.Gen.Internal.MkRNGType (GHC.Ptr.Ptr
                                                          ())
    -- Defined in ‘gsl-random-0.5.0:GSL.Random.Gen.Internal’

这就是我卡住的地方。我不明白如何基于此实例化 RNGType 对象。

您必须使用 GSL.Random.Gen 模块中的函数 mt19937rngType 来构建 RNGType,因为 RNGType 的实现是内部的到这个图书馆。