Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Monty-Hall-problem/F-Sharp/monty-hall-problem-1.fs
Normal file
13
Task/Monty-Hall-problem/F-Sharp/monty-hall-problem-1.fs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
open System
|
||||
let monty nSims =
|
||||
let rnd = new Random()
|
||||
let SwitchGame() =
|
||||
let winner, pick = rnd.Next(0,3), rnd.Next(0,3)
|
||||
if winner <> pick then 1 else 0
|
||||
|
||||
let StayGame() =
|
||||
let winner, pick = rnd.Next(0,3), rnd.Next(0,3)
|
||||
if winner = pick then 1 else 0
|
||||
|
||||
let Wins (f:unit -> int) = seq {for i in [1..nSims] -> f()} |> Seq.sum
|
||||
printfn "Stay: %d wins out of %d - Switch: %d wins out of %d" (Wins StayGame) nSims (Wins SwitchGame) nSims
|
||||
32
Task/Monty-Hall-problem/F-Sharp/monty-hall-problem-2.fs
Normal file
32
Task/Monty-Hall-problem/F-Sharp/monty-hall-problem-2.fs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
let montySlower nSims =
|
||||
let rnd = new Random()
|
||||
let MontyPick winner pick =
|
||||
if pick = winner then
|
||||
[0..2] |> Seq.filter (fun i -> i <> pick) |> Seq.nth (rnd.Next(0,2))
|
||||
else
|
||||
3 - pick - winner
|
||||
let SwitchGame() =
|
||||
let winner, pick = rnd.Next(0,3), rnd.Next(0,3)
|
||||
let monty = MontyPick winner pick
|
||||
let pickFinal = 3 - monty - pick
|
||||
|
||||
// Show that Monty's pick has no effect...
|
||||
|
||||
if (winner <> pick) <> (pickFinal = winner) then
|
||||
printfn "Monty's selection actually had an effect!"
|
||||
if pickFinal = winner then 1 else 0
|
||||
|
||||
let StayGame() =
|
||||
let winner, pick = rnd.Next(0,3), rnd.Next(0,3)
|
||||
let monty = MontyPick winner pick
|
||||
|
||||
// This one's even more obvious than the above since pickFinal
|
||||
// is precisely the same as pick
|
||||
|
||||
let pickFinal = pick
|
||||
if (winner = pick) <> (winner = pickFinal) then
|
||||
printfn "Monty's selection actually had an effect!"
|
||||
if winner = pickFinal then 1 else 0
|
||||
|
||||
let Wins (f:unit -> int) = seq {for i in [1..nSims] -> f()} |> Seq.sum
|
||||
printfn "Stay: %d wins out of %d - Switch: %d wins out of %d" (Wins StayGame) nSims (Wins SwitchGame) nSims
|
||||
Loading…
Add table
Add a link
Reference in a new issue