История изменений
Исправление no-such-file, (текущая версия) :
если у вас ответ НЕ 1/2
Но ведь она 1/2
(defparameter *boxes* '((gold gold) (silver silver) (gold silver)))
(defun shuffle-coins (coins)
(if (= (random 2) 0)
coins
(list (second coins) (first coins))))
(defun random-pick-box ()
(shuffle-coins (elt *boxes* (random 3))))
(defun experiment (turns)
(loop repeat turns collect (random-pick-box)))
(defun calc-result (seq)
(let ((gg (count '(gold gold) seq :test #'equal))
(gs (count '(gold silver) seq :test #'equal)))
(* (/ gg (+ gg gs)) 100.0)))
(calc-result (experiment 10000)) ;; 50
Ключевая фраза: из того же сундука. Не из всех, а только из того же. Понятно, что в этом же сундуке может быть только 2 варианта и вероятность 1/2.
Исходная версия no-such-file, :
если у вас ответ НЕ 1/2
Но ведь она 1/2
(defparameter *boxes* '((gold gold) (silver silver) (gold silver)))
(defun shuffle-coins (coins)
(if (= (random 2) 0)
coins
(list (second coins) (first coins))))
(defun random-pick-box ()
(shuffle-coins (elt *boxes* (random 3))))
(defun experiment (turns)
(loop repeat turns collect (random-pick-box)))
(defun calc-result (seq)
(let ((gg (count '(gold gold) seq :test #'equal))
(gs (count '(gold silver) seq :test #'equal)))
(* (/ gg (+ gg gs)) 100.0)))
(calc-result (experiment 10000))
Ключевая фраза: из того же сундука. Не из всех, а только из того же. Понятно, что в этом же сундуке может быть только 2 варианта и вероятность 1/2.