初始化一个每次都相同的随机序列,然后在 F# 中引用它

Initialize a random sequence that is the same each time you then refer to it in F#

我想通过将序列压缩成随机无限序列并对元组的第二个元素进行快速选择来从序列中获取随机样本,但我遇到了一个问题,即用随机整数初始化的序列不会保留与第一次评估时的值相同。因此,例如以下代码输出 5 条不同的行。

let ran=new System.Random(10001100)
let MySeq=Seq.init 10 (fun i->ran.Next())
for time in 0..4 do (for element in MySeq do printf "%s " (element.ToString()) 
                     do printf "\n")

有没有什么方法可以用随机值初始化一个序列,以便这些值在计算后保持不变?

如果您不硬性依赖 mySeq 确实是一个惰性序列,您可以将其改为数组。

let ran = System.Random(10001100)
let mySeq = Array.init 10 (fun i -> ran.Next())
for time in 0..4 do
    for element in mySeq do
        printf "%O " element 
    printf "\n"