gpt4 book ai didi

functional-programming - 将随机索引生成到数组中的最佳方法?

转载 作者:行者123 更新时间:2023-12-04 08:42:59 24 4
gpt4 key购买 nike

下午好。我有一组值,我想从中抽取一个随机子集。

我的第一个想法是:

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) 可能会多次生成相同的值。我怎样才能得到不同的值(value)?我的第一个想法是重复将索引存储到一个集合中,直到该集合包含所需数量的元素?但这似乎太程序化/不够实用?有没有更好的办法?

或者我应该从 [0..size-1] 开始并从中删除随机元素直到它包含所需的数字索引?

我并不是在寻找最有效的方法,而是最实用的方法。我正在努力更好地理解功能性思维方式。

最佳答案

如果您对所有索引的列表进行随机排序,您可以只取列表中第一个 count 个元素。

let getRandomIndices size count =
if size >= count then
let r = System.Random()
[0..size-1] |> List.sortBy (fun _ -> r.Next()) |> List.take count
else
[0..size-1]

关于functional-programming - 将随机索引生成到数组中的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com