下午好。我有一组值,想要从中随机选择一个子集。
我的第一个想法是:
let getRandomIndices size count =
if size >= count then
let r = System.Random()
r.GetValues(0,size) |> Seq.take count |> Seq.toList
else
[0..size-1]
然而,r.GetValues(0,size) 可能会多次生成相同的值。我该如何获取不同的值?我的第一个想法是重复将索引存储到集合中,直到集合包含所需数量的元素?但这似乎过于程序化/非函数化?是否有更好的方法?
或者,我应该从 [0..size-1] 开始,并删除其中的随机元素,直到它包含所需数量的索引?
我并不是真的在寻找最有效的方法,而是最功能化的方法。我正在努力更好地理解函数式思维方式。