gpt4 book ai didi

random - 如何在 Ocaml 中随机选择一个元素?

转载 作者:行者123 更新时间:2023-12-03 18:11:31 26 4
gpt4 key购买 nike

在我的 OCaml 程序中,我需要从大量字符串中随机选择一个字符串。到目前为止,我已经尝试了两种不同的方法,但都收效甚微。我首先将所有字符串存储到一个列表中,然后从列表中随机选择一个元素:

let randomelement l =
List.nth l (Random.int (List.length l))

但是如果它选择列表中的第 1000 个字符串,这需要很长时间。所以我把它都放在一个集合中,认为 Set.choose将从集合中返回一个随机元素。但这似乎不起作用。我想我有两个问题...如何 Set.choose工作,有没有更好的方法在 Ocaml 中随机选择一个元素?

最佳答案

如果您关心选择速度,您应该使用不同的容器。当您可以使用具有 O(1) 即常数时间的 Array 时,为什么使用具有 O(n) 访问权限的 List 或具有 O(log n) 的 Set。

要调整您的示例:

let randomelement arr =
let n = Random.int (Array.length arr) in
Array.get arr n;;

关于random - 如何在 Ocaml 中随机选择一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782932/

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