楽しみのために、 F# を使用してモンティ ホール問題の問題の簡単なシミュレーションを作成しようとしてい ます。
3 つのブール値 (ドアを表す) の配列を返す関数getShowを作成しました。そのうちの 1 つはランダムに true (後ろに車があります) で、他の 2 つは false です。
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関数を呼び出す正しい方法は何ですか?