为了好玩,我正在尝试 使用 F#编写一个简单的蒙蒂霍尔问题模拟。
我创建了一个函数getShow,它返回一个包含三个布尔值(代表门)的数组,其中一个随机为真(后面有一辆汽车),另外两个为假。
let getShow =
let doorWithCar = System.Random().Next(3)+1
[|for door in 1..3 -> door = doorWithCar|]
现在,当我尝试使用yield调用getShow函数来获取一系列节目时,我不断重复第一个随机节目(我猜是因为闭包在 F# 中的工作方式)。
let shows =
seq { for i in 1 .. 10 do yield getShow} // Keeps generating the same show over and over
使用yield调用getShow函数的正确方法是什么,以便它实际调用该函数并获取一个新的随机数组?