3 coin flip Monte Carlo simulation in Clojure

less than 1 minute read

Code

;; three_coin_toss_montecarlo.clj
;; Montecarlo simulation of 3 coin toss

(defn toss-thrice []
  (repeatedly 3 #(rand-nth ["H" "T"])))

(defn samples [num]
  (repeatedly num toss-thrice))

(defn nil-to-zero [x]
  (if (nil? x) 0 x))

(defn side-count [coll side]
   (nil-to-zero (get (frequencies coll) side)))

(defn heads-count [coll]
  (side-count coll "H"))

(defn tails-count [coll]
  (side-count coll "T"))

(def data (samples 100))

(count (filter #(= (tails-count %) 2) data))

(count (filter #(= (heads-count %) 2) data))

(count (filter #(= (tails-count %) 3) data))

(count (filter #(= (heads-count %) 3) data))

(count (filter #(= (tails-count %) 0) data))

(count (filter #(= (heads-count %) 0) data))

(apply + (map #(tails-count %) data))

(apply + (map #(heads-count %) data))

Notes

Updated: