2018-05-08    コイン投げ    確率    フォン・ノイマン    Go言語    シミュレーション  

偏りがあるコインを使って偏りのないコインをシミュレートする方法

https://play.golang.org/p/_01Ho_awkYO

package main

import (
    "fmt"
    "math/rand"
)

func biasedCoin() string {
    if rand.Intn(5) == 0 {
        return "H" // 1/5
    } else {
        return "T" // 4/5
    }
}

func unbiasedCoin() string {
    for {
        switch biasedCoin() + biasedCoin() {
        case "HT":
            return "H"
        case "TH":
            return "T"
        default:
            // retry
        }
    }
}

 2018-05-08    コイン投げ    確率    フォン・ノイマン    Go言語    シミュレーション