【发布时间】:2019-03-05 18:51:56
【问题描述】:
我刚开始学习 Clojure,我正在尝试模拟 Monty Hall 问题:
(defn create-contest
"Creates a monty hall doors contest"
[n]
(do (def door-with-car (rand-int n))
(map
(fn [i] (if (= i door-with-car) :car :closed))
(range n))))
(defn create-doors
"Create a collection of monty hall contests"
[doors contests]
(doall
(map
(fn [i] (create-contest i))
(repeat contests doors))))
但每次我执行create-doors 函数时,所有带汽车的门最终都处于相同的位置:
broker.core> (create-doors 4 10)
((:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed)
(:car :closed :closed :closed))
broker.core> (create-doors 4 10)
((:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed))
broker.core> (create-doors 4 10)
((:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed)
(:closed :car :closed :closed))
我做错了什么?
【问题讨论】:
标签: clojure functional-programming statistics