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
模块中的函数 mt19937
和 rngType
来构建 RNGType
,因为 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
模块中的函数 mt19937
和 rngType
来构建 RNGType
,因为 RNGType
的实现是内部的到这个图书馆。