相关疑难解决方法(0)

在Haskell中从列表中无需替换的随机样本的更好方法

我需要从较长的列表中随机取样而不进行替换(每个元素仅在样本中出现一次).我正在使用下面的代码,但现在我想知道:

  1. 是否有库函数可以做到这一点?
  2. 我该如何改进这段代码?(我是一个Haskell初学者,所以即使有一个库函数,这也很有用).

抽样的目的是能够概括从样本分析到人群的结果.

import System.Random

-- | Take a random sample without replacement of size size from a list.
takeRandomSample :: Int -> Int -> [a] -> [a]
takeRandomSample seed size xs
    | size < hi  = subset xs rs
    | otherwise = error "Sample size must be smaller than population."
    where
        rs = randomSample seed size lo hi
        lo = 0
        hi = length xs - 1

getOneRandomV g lo hi = randomR (lo, hi) g

rsHelper size …
Run Code Online (Sandbox Code Playgroud)

haskell list

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

标签 统计

haskell ×1

list ×1