а с Машей жизнь веселее...

Apr 21, 2016 10:24

ПРОГРАММНЫЕ ИСПЫТАНИЯ

у нас есть три конфеты с вероятностью годности каждой 1/3,
ибо годная только одна из них, а две - не годные.
отбираем одну и откладываем ее в сторону.

вариант без Маши
каковы шансы выжить при замене и не замене отложенной на одну из двух других?

вариант с Машей
каковы шансы выжить при замене отложенной годной на не годную и наоборот?

счетчики годности трех конфет (10000 испытаний)
n1 n2 n3
----------- ----------- -----------
3350 3294 3356

счетчики ЖИЗНИ И СМЕРТИ при случайном выборе - ВАРИАНТ БЕЗ МАШИ
менять-не-менять случайную на любую из двух других
жизнь смерть
----------- -----------
3179 6821

счетчики ЖИЗНИ И СМЕРТИ при случайном выборе - ВАРИАНТ С МАШЕЙ
обязательно менять годную на негодную или не годную на годную
жизнь смерть
----------- -----------
6639 3361



-- ЗАДАЧА о ТРЕХ КОНФЕТАХ
set nocount on
declare @i int, @k int, @m int, @x int, @r float
declare @T table (n1 int, n2 int,n3 int)
declare @S1 table (l int, m int)
declare @S2 table (l int, m int)

set @i = 0
insert into @T values (0,0,0)
insert into @S1 values (0,0)
insert into @S2 values (0,0)
while @i < 10000 begin
set @k = 1+3*rand() -- Генератор опр. случ.номер из 1,2,3 годной конфеты
-- обработка счетчиков годности
if @k=1 update @t set n1 = n1+1
if @k=2 update @t set n2 = n2+1
if @k=3 update @t set n3 = n3+1

set @x = 1+3*rand() -- Петя отбирает случ.номер из 1,2,3 конфеты себе
set @r = rand() -- Петя кидает монетку: < 0.5 он не меняет отобранную, >= 0.5 - меняет

-- Анализ генератором действия Пети в зависимости от текущего расклада годная-выбранная
if @x=@k begin -- если выбрана годная
if @r < 0.5 -- не меняет
update @S1 set l = l+1 -- не меняем годную на не годную - увелич счетчик жизни
else begin -- меняет
update @S1 set m = m+1 -- меняем годную на не годную - увелич счетчик смерти
end
update @S2 set m = m+1 -- Маша - меняем годную на не годную - увелич счетчик смерти
end else begin -- если выбрана не годная
set @m = 2+2*rand() -- случ.номер из 2,3 конфеты для замены
if @x = 2 and @m = 2 set @m = 1 -- переопр. номер для завмены если он совпал с номером выбранной 2 - на 1 из 1,3
if @x = 3 and @m = 3 set @m = 2 -- переопр. номер для завмены если он совпал с номером выбранной 3 - на 2 из 1,2
if @r < 0.5 -- не меняет
update @S1 set m = m+1 -- не меняем не годную - увелич счетчик смерти
else begin -- меняет
if @m = @k -- номер для замены совпал с номером годной
update @S1 set l = l+1 -- меняем не годную на годную - увелич счетчик жизни
else begin
update @S1 set m = m+1 -- меняем не годную на не годную - увелич счетчик смерти
end
end
update @S2 set l = l+1 -- Маша - меняем не годную на годную - увелич счетчик жизни
end

set @i = @i+1
end
print 'счетчики годности трех конфет (10000 испытаний)'
select * from @T
print 'счетчики ЖИЗНИ И СМЕРТИ при случайном выборе - ВАРИАНТ БЕЗ МАШИ'
print 'менять-не-менять случайную на любую из двух других'
select 'жизнь'=L, 'смерть'=M from @S1
print 'счетчики ЖИЗНИ И СМЕРТИ при случайном выборе - ВАРИАНТ С МАШЕЙ'
print 'обязательно менять годную на негодную или не годную на годную'
select 'жизнь'=L, 'смерть'=M from @S2

теория вероятностей

Previous post Next post
Up