使用F#填充具有唯一随机值的列表

时间:2016-03-30 16:05:02

标签: f#

我正在努力学习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可以生成相同的数字......

1 个答案:

答案 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之间没有多个不同的值!