F# 如何使数组洗牌函数在后续调用中产生不同的结果

F# 如何使数组洗牌函数在后续调用中产生不同的结果,f#,F#,我有以下功能,可以按我希望的方式进行单个调用: let shuffle (arr : 'a array) = let array = Array.copy arr let rng = new Random() let n = array.Length for x in 1..n do let i = n-x let j = rng.Next(i+1) let tmp = array.[i] array

我有以下功能,可以按我希望的方式进行单个调用:

let shuffle (arr : 'a array) =
    let array = Array.copy arr
    let rng = new Random()
    let n = array.Length
    for x in 1..n do
        let i = n-x
        let j = rng.Next(i+1)
        let tmp = array.[i]
        array.[i] <- array.[j]
        array.[j] <- tmp
    array

您希望将随机变量移动到函数外部,如下所示:

let rng = new Random()
let shuffle (arr : 'a array) =
    let array = Array.copy arr
    let n = array.Length
    for x in 1..n do
        let i = n-x
        let j = rng.Next(i+1)
        let tmp = array.[i]
        array.[i] <- array.[j]
        array.[j] <- tmp
    array
let rng=new Random()
让我们洗牌(arr:'一个数组)=
让array=array.copy arr
设n=array.Length
对于1..n中的x
设i=n-x
设j=rng.Next(i+1)
设tmp=array[i]

数组。[对不起,我应该删除它吗?不值得删除,这可能有一天会对谷歌上的人有所帮助。
let rng = new Random()
let shuffle (arr : 'a array) =
    let array = Array.copy arr
    let n = array.Length
    for x in 1..n do
        let i = n-x
        let j = rng.Next(i+1)
        let tmp = array.[i]
        array.[i] <- array.[j]
        array.[j] <- tmp
    array