mirror of
https://github.com/jesperh1/MontyHallStats.git
synced 2025-05-16 17:28:10 +01:00
Initial commit
This commit is contained in:
parent
e77b5dc273
commit
a4095d77d2
80
main.go
Normal file
80
main.go
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func play_game(switchDoor bool) bool {
|
||||||
|
// Initialize the random number generator with the current time
|
||||||
|
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
|
||||||
|
doors := []int{1, 2, 3}
|
||||||
|
prize := doors[rng.Intn(3)]
|
||||||
|
chosen := 0
|
||||||
|
|
||||||
|
// Create a new source of random
|
||||||
|
rng = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
|
||||||
|
// Select a random door
|
||||||
|
input := rng.Intn(3)
|
||||||
|
chosen = input
|
||||||
|
|
||||||
|
// Open one of the other two doors to reveal a goat
|
||||||
|
var opened int
|
||||||
|
for _, door := range doors {
|
||||||
|
if door != chosen && door != prize {
|
||||||
|
opened = door
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Switch the door if switchDoor equals true
|
||||||
|
if switchDoor {
|
||||||
|
for _, door := range doors {
|
||||||
|
if door != chosen && door != opened {
|
||||||
|
chosen = door
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return if the prize is won
|
||||||
|
return chosen == prize
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// How many games to play
|
||||||
|
gamesToPlay := 10000
|
||||||
|
games := make([]int, gamesToPlay)
|
||||||
|
|
||||||
|
// Should the door be switched?
|
||||||
|
switchDoor := true
|
||||||
|
|
||||||
|
for i := 0; i < gamesToPlay; i++ {
|
||||||
|
won := play_game(switchDoor)
|
||||||
|
if won {
|
||||||
|
games[i] = 1
|
||||||
|
} else {
|
||||||
|
games[i] = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
totalWon := 0
|
||||||
|
totalLost := 0
|
||||||
|
|
||||||
|
// Count the number of won and lost games
|
||||||
|
for _, num := range games {
|
||||||
|
if num == 0 {
|
||||||
|
totalLost++
|
||||||
|
} else {
|
||||||
|
totalWon++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the winning chance
|
||||||
|
winningChance := float64(totalWon) / float64(gamesToPlay) * 100.0
|
||||||
|
fmt.Printf("In %d games\nGames won: %d\nGames Lost: %d\n", gamesToPlay, totalWon, totalLost)
|
||||||
|
fmt.Printf("This gives you a winning chance of %.2f%% percent\n", winningChance)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user