az118 (az118) wrote,
az118
az118

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

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

у нас есть три конфеты с вероятностью годности каждой 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


Tags: теория вероятностей
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments