我正在努力学习F#,但我坚持一件非常简单的事情。
我想创建一个包含uniques随机值的列表,我可以在控制台上显示。让我们说列表中的随机1到100和10个元素。
我在这里看到了这段代码F# getting a list of random numbers:
let genRandomNumbers count =
let rnd = System.Random()
List.init count (fun _ -> rnd.Next (1, 100))
let l = genRandomNumbers 10
printfn "%A" l
但是我怎么能把这些数字变成不同的?这不是一个重复的问题,因为我找不到确定每个数字是唯一的方法; Random.Next可以生成相同的数字......
答案 0 :(得分:1)
这是一个非常简单的解决方案:
let genRandomNumbers count =
let rnd = System.Random()
let initial = Seq.initInfinite (fun _ -> rnd.Next (1, 100))
initial
|> Seq.distinct
|> Seq.take(count)
|> Seq.toList
请注意,Seq.distinct
完全符合您要获取的唯一值。另请注意,如果您尝试获得大于99的计数,则会出现问题,因为在1到99之间没有多个不同的值!