2

楽しみのために、 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関数を呼び出す正しい方法は何ですか?

4

1 に答える 1