Здравствуйте, nikov, Вы писали:
N>Имеется 5 урн, в каждой из них по 3 шара (в 4 урнах по 2 белых и 1 черному шару, а в 1 урне — 1 белый и 2 черных).
N>Урны в случайном порядке выставляются в ряд (все перестановки равновероятны). Из 1-й урны вынимают наугад шар и перекладывают во 2-ю, затем из 2-й вынимают наугад шар и перекладывают в 3-ю, и т.д. Наконец, наугад вынимают шар из 5-й урны.
N>1) Какова вероятность, что он окажется белым?
Это ведь этюд для программистов?
# -*- coding: cp866 -*-
# (виндоуз, консоль, русские буквы в программе)
# НОД
def gcd(a,b) :
if a<0 :
a = -a
if b<0 :
b = -b
if a<b :
(a,b) = (b,a)
while b :
(a,b) = (b,a%b)
return a
# по-быстрому класс рациональной арифметики
class Ratio :
n = 0
d = 1
def __init__(self,n,d) :
g = gcd(n,d)
self.n=n/g
self.d=d/g
def show(self) :
return "(%d/%d)" % (self.n,self.d)
def __repr__(self) :
return self.show()
def __str__(self) :
return self.show()
def __add__(self,other) :
return Ratio( self.n*other.d + other.n*self.d, self.d*other.d )
def __sub__(self,other) :
return Ratio( self.n*other.d - other.n*self.d, self.d*other.d )
def __mul__(self,other) :
return Ratio( self.n*other.n, self.d*other.d )
def __radd__(self,other) :
return self + Ratio(other,1)
# константы
pzero = Ratio(0,1)
pone = Ratio(1,1)
p14,p24,p34 = Ratio(1,4),Ratio(2,4),Ratio(3,4)
# количество корзин
buckets = 5
# вероятности для каждой перестановки
probs = {}
# всего у нас 5 перестановок - когда корзина с 1 белым и 2 чёрными шарами оказывается на заданной позиции
for specbucket in xrange(1,buckets+1) :
print "корзина %d особенная" % specbucket
if specbucket==1 :
p = Ratio(1,3)
else :
p = Ratio(2,3)
print " вытаскиваем %d-й шар, он белый с вероятностью %s" % (1,p)
for bucket in xrange(2,buckets+2) :
if bucket==specbucket :
# 1 of 4 <- if ball is black
# 2 of 4 <- if ball is white
# 3 of 4 <- never
(p1,p2,p3) = (pone-p,p,pzero)
else :
(p1,p2,p3) = (pzero,pone-p,p)
print " в корзине %d лежат 1..3 белых шара из 4 с вероятностями %s" % (bucket,(p1,p2,p3))
p = p1*p14 + p2*p24 + p3*p34
print " вытаскиваем %d-й шар, он белый с вероятностью %s" % (1,p)
probs[specbucket] = p
print "итого, вероятности"
for i in probs :
print " %d -> %s" % (i, probs[i])
print "суммарная вероятность %s" % (sum(probs[i] for i in probs)*Ratio(1,5))
корзина 1 особенная
вытаскиваем 1-й шар, он белый с вероятностью (1/3)
в корзине 2 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (2/3), (1/3))
вытаскиваем 1-й шар, он белый с вероятностью (7/12)
в корзине 3 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (5/12), (7/12))
вытаскиваем 1-й шар, он белый с вероятностью (31/48)
в корзине 4 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (17/48), (31/48))
вытаскиваем 1-й шар, он белый с вероятностью (127/192)
в корзине 5 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (65/192), (127/192))
вытаскиваем 1-й шар, он белый с вероятностью (511/768)
в корзине 6 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (257/768), (511/768))
вытаскиваем 1-й шар, он белый с вероятностью (2047/3072)
корзина 2 особенная
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 2 лежат 1..3 белых шара из 4 с вероятностями ((1/3), (2/3), (0/1))
вытаскиваем 1-й шар, он белый с вероятностью (5/12)
в корзине 3 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (7/12), (5/12))
вытаскиваем 1-й шар, он белый с вероятностью (29/48)
в корзине 4 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (19/48), (29/48))
вытаскиваем 1-й шар, он белый с вероятностью (125/192)
в корзине 5 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (67/192), (125/192))
вытаскиваем 1-й шар, он белый с вероятностью (509/768)
в корзине 6 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (259/768), (509/768))
вытаскиваем 1-й шар, он белый с вероятностью (2045/3072)
корзина 3 особенная
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 2 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 3 лежат 1..3 белых шара из 4 с вероятностями ((1/3), (2/3), (0/1))
вытаскиваем 1-й шар, он белый с вероятностью (5/12)
в корзине 4 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (7/12), (5/12))
вытаскиваем 1-й шар, он белый с вероятностью (29/48)
в корзине 5 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (19/48), (29/48))
вытаскиваем 1-й шар, он белый с вероятностью (125/192)
в корзине 6 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (67/192), (125/192))
вытаскиваем 1-й шар, он белый с вероятностью (509/768)
корзина 4 особенная
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 2 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 3 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 4 лежат 1..3 белых шара из 4 с вероятностями ((1/3), (2/3), (0/1))
вытаскиваем 1-й шар, он белый с вероятностью (5/12)
в корзине 5 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (7/12), (5/12))
вытаскиваем 1-й шар, он белый с вероятностью (29/48)
в корзине 6 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (19/48), (29/48))
вытаскиваем 1-й шар, он белый с вероятностью (125/192)
корзина 5 особенная
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 2 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 3 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 4 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (1/3), (2/3))
вытаскиваем 1-й шар, он белый с вероятностью (2/3)
в корзине 5 лежат 1..3 белых шара из 4 с вероятностями ((1/3), (2/3), (0/1))
вытаскиваем 1-й шар, он белый с вероятностью (5/12)
в корзине 6 лежат 1..3 белых шара из 4 с вероятностями ((0/1), (7/12), (5/12))
вытаскиваем 1-й шар, он белый с вероятностью (29/48)
итого, вероятности
1 -> (2047/3072)
2 -> (2045/3072)
3 -> (509/768)
4 -> (125/192)
5 -> (29/48)
суммарная вероятность (13/20)
N>2) Допустим, что шар, вынутый из 5-й урны, оказался белым.
N> (2a) Какова вероятность, что шар, который переложили из 1-й урны во 2-ю, также был белым?
Это надо считать по Байесу...
Чёрт, всю теорию вероятности позабыл.
N> (2b) Какая вероятность, что это тот же самый шар?
Вероятность вытаскивания белого шара от начала до конца — 3/1280
(1/3+4*2/3)/5 * (1/4)^4
============= === =- количество урн после первой
| +----- количество шаров в урне, после вброса
+----------------- вероятность вынимания белого шара из первой урны
Байес, байес, ау...
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>