random - 如何使用F#从列表中选择一个随机值

标签 random f# f#-interactive

我是F#的新手,我试图弄清楚如何从字符串列表/字符串数组中返回随机字符串值。

我有一个这样的 list :

["win8FF40", "win10Chrome45", "win7IE11"]

如何从上面的列表中随机选择并返回一项?

这是我的第一次尝试:

let combos = ["win8FF40";"win10Chrome45";"win7IE11"]  

let getrandomitem () =  
  let rnd = System.Random()  
  fun (combos : string[]) -> combos.[rnd.Next(combos.Length)]  

最佳答案

您的问题是您混用了Array和F#List(*type*[]Array的类型符号)。您可以像这样修改它以使用列表:

let getrandomitem () =  
  let rnd = System.Random()  
  fun (combos : string list) -> List.nth combos (rnd.Next(combos.Length))

话虽如此,索引List通常不是一个好主意,因为它具有O(n)性能,因为F#列表基本上是链接列表。如果可能的话,最好将combos制成数组:

let combos = [|"win8FF40";"win10Chrome45";"win7IE11"|]  

关于random - 如何使用F#从列表中选择一个随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312260/

相关文章:

javascript - 如何使用javascript中的if语句根据随机数显示/隐藏文本(无jquery)

visual-studio-2005 - 在 Visual Studio 2005 中设置 F#

f# - CSV 类型提供程序在 F# 交互式中找不到列

f# - 如何在 F# 中定义 printfn 等价物

php - MySQL RAND() 不工作,总是得到相同的结果

java - 生成特定的随机字符串数组

c - 基于 2 个输入的伪随机数生成器

f# - F# 标识符、模块、类型和成员名称中允许使用哪些字符?

F# 交互,API 对 dll 引用的限制