小编Seb*_*ian的帖子

伯努利分布式布尔值的 Haskell 无限列表

我需要一个有偏见的随机布尔值列表。每个布尔值都需要具有相同的真概率(伯努利分布)。这些布尔值被传递给一个函数,该函数为每个输入布尔值生成零个或多个输出布尔值。我需要一个无限列表,因为我事先不知道需要多少布尔值才能提供足够的输出。请参阅以下(简化)代码:

import System.Random.MWC
import System.Random.MWC.Distributions

foo :: [Bool] -> [Bool] -- foo outputs zero or more Bools per input Bool

main = do
  gen <- create
  bits <- sequence . repeat $ bernoulli 0.25 gen
  print . take 32 . foo $ bits
Run Code Online (Sandbox Code Playgroud)

不幸的是,这段代码只挂在main. 我猜在某处发生了一些非懒惰的事情Control.Monad.ST

(我可以用 做这样的事情System.Random.randoms,但结果值没有所需的分布。)

我可以在继续使用System.Random.MWC图书馆的同时解决这个问题吗?或者这是否需要我切换到替代实现?

random haskell

1
推荐指数
1
解决办法
299
查看次数

标签 统计

haskell ×1

random ×1