LINUX.ORG.RU

3 сундука по 2 монеты

 , , ,


14

2

Старая задачка. Нашел максимально точную формулировку, попрошу придерживаться её.

У нас есть три сундука, в каждом из которых лежит по две монетки.

В первом — две золотых. Во втором — две серебрянных. В третьем — одна золотая и одна серебрянная.

Мы выбираем сундук случайным образом и вслепую вытаскиваем оттуда монетку. Она оказывается золотой. Какова вероятность того, что следующая вытащенная из того же сундука монетка — тоже золотая?

Просьба, объяснить свое решение, если у вас ответ НЕ 1/2.

Я не вижу, где в условии задачи есть зависимость второго этапа от первого, поэтому считаю, что задача сводится к выбору из двух равновероятных вариантов, а предисловие - для того, что бы запутать и пустить в рассуждения с теоремой Байеса.

PS. Добавьте тег «тервер», плиз.

Deleted

Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от at

Остаются 2 варианта.

Но эти варианты не равновероятны.

У тебя было три равновероятных возможности вытащить золотую монету: две для первого сундука и одна для третьего. Поэтому с вероятностью 2/3 ты тянешь вторую монету из первого сундука, где она заведомо золотая, и с оставшейся вероятностью 1/3 из третьего, где она заведомо серебряная.

Итого: (2/3)*1 + (1/3)*0 = 2/3.

d ★★★★
()
Ответ на: комментарий от Yugo

Есть два сундука, в одном две золотые монеты, в другом - одна золотая, одна серебряная.

При этом про один из сундуков тебе кое-что уже известно.

backburner
()
Ответ на: комментарий от d

Третий сундук (в котором было 2 серебряных) рассматривать не стоит, т.к. уже вытащена золотая. Остаются 2 сундука (З,С и З.З)

at ★★
()
Ответ на: комментарий от at

Третий сундук (в котором было 2 серебряных) рассматривать не стоит

В третьем — одна золотая и одна серебрянная.

d ★★★★
()
Ответ на: комментарий от d
1 - З,З
2 - С,С // его не расматриваем
3 - З,С

Итого остаются только 2. Хорошо, пусть это будет сундук № 2, на решение это не влияет

at ★★
()

Тред не полон без программы на c++

#include <iostream>
#include <cstdlib>
#include <ctime>
using std::cout;
using std::endl;
enum COIN {
  GOLD,
  SILVER
};

struct chest {
  COIN coins[2];
};

const chest chests[] = {
  { {GOLD, GOLD} },
  { {GOLD, SILVER} },
  { {SILVER, SILVER} },
};
#define LEN(x) (sizeof(x)/sizeof((x)[0]))
int main()
{
  unsigned N = 10000000;
  unsigned chest_opened = 0;
  unsigned second_coin_gold = 0;
  srand ( time(NULL) );
  for (unsigned roll=0;roll<N;++roll)
  {
    const chest * ch = chests + rand()%LEN(chests);
    const int coin_index = rand()%2;
    if (ch->coins[coin_index] != GOLD)
      continue;
    ++chest_opened;
    const int other_coin_index = !coin_index;
    if (ch->coins[other_coin_index] == GOLD)
      ++second_coin_gold;
  }
  cout << "second coin is also gold in " << float(int(float(second_coing_gold)*1000/chest_opened))/10 << "% cases" << endl;
  return 0;
}

Ответ - уверенные 66.7%. Теперь разоблачение магии: в задаче не нужен СУНДУК с СЕРЕБРОМ, его можно закомментировать и результат не изменится. И вообще на самом деле после этого можно выкинуть сами сундуки, оставив монеты. ТРИ монеты, угадайте какие.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от d

У тебя было три равновероятных возможности вытащить золотую монету:

Фактически не было, так как по условию задачи мы вытащили золотую, то есть это тоже самое если бы мы знали в каких двух сундуках находятся золотые и выбрали один из них.

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от at

Я понял, в чём твоя ошибка. Ты различаешь монеты только по металлу, но не учитываешь, что золотых монет три разных штуки.

Давай обозначим серебряную монету согласной S, а золотые гласными A, E, I. Тогда возможные варианты:

(A,E)   x
(A,I)   x
(A,S)
-----
(E,A)   x
(E,I)   x
(E,S)
-----
(I,A)   x
(I,E)   x
(I,S)

Т.е. ты объединял два первых варианта в каждой тройке в один.

d ★★★★
()
Ответ на: комментарий от TDrive

то есть это тоже самое если бы мы знали в каких двух сундуках находятся золотые и выбрали один из них

В твоём рассуждении ошибка в том, что мы выбрали не сундук, а монету. Мы ведь до сих пор не знаем, из первого сундука взяли или из третьего, что же это за выбор сундука? С этим ты согласен?

А выбор золотой монеты в двух случаях из трёх говорит, что мы в первом сундуке.

d ★★★★
()
Ответ на: комментарий от at

Это не три сундука. Я подписал каждую золотую монету (A, E, I) и нас интересуют только варианты, когда первая монета золотая.

d ★★★★
()
Ответ на: комментарий от d

В любом случае у тебя нет варианта с S,S, что противоречит условию. И не надо каждую золотую рассматривать отдельно. По условию они равнозначны

at ★★
()
Ответ на: комментарий от d

В твоём рассуждении ошибка в том, что мы выбрали не сундук, а монету. Мы ведь до сих пор не знаем, из первого сундука взяли или из третьего, что же это за выбор сундука? С этим ты согласен?

Мы ничего не выбирали, нам по условию задачи дали сундук в котором было или 2 золотых или одна золотая а одна серебряная.

TDrive ★★★★★
()
Ответ на: комментарий от at

В любом случае у тебя нет варианта с S,S, что противоречит условию

Этот вариант может быть безболезненно выброшен, он не влияет на конечный результат, это даже эксперимент подтверждает.

legolegs ★★★★★
()
Ответ на: комментарий от backburner

Почти понял почему 2/3 и решил проверить

from random import randint
found_gold = 0
for i in xrange(10000):
    boxes = [['gold','gold'],['gold','silver']]
    selection = randint(0,1)
    boxes[selection].remove('gold')
    if "gold" in boxes[selection]:
         found_gold = found_gold + 1
print found_gold

но на удивление выходит 1/2

Upd:
Видимо неправильно начальное условие составил, одно золото уже вытащено к этому моменту

zolden ★★★★★
()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от legolegs

Поэтому остаются всего два варианта З,С и З,З. То есть 50/50

at ★★
()
Ответ на: комментарий от at

В любом случае у тебя нет варианта с S,S, что противоречит условию.

Нас интересуют только варианты, когда первая монета золотая.

И не надо каждую золотую рассматривать отдельно. По условию они равнозначны.

Если бы в третьем сундуке было 999 золотых и 1 серебряная, ты бы тоже сказал, что вероятность вытащить наугад золотую 1/2? Да нужно быть везунчиком, чтобы при таком раскладе попасть в серебряную. Количество монет имеет значение.

d ★★★★
()
Ответ на: комментарий от zolden

Потому что ты выбираешь сундуки, а не монеты. Когда мы вытащили первую монету, мы не знаем, в каком сундуке находимся. Первый выбор должен быть из монет (gold, gold, gold, silver), т.к. с одинаковой вероятностью тебе могла попасться любая из них.

d ★★★★
()
Ответ на: комментарий от zolden
from random import randint
boxes = [['gold', 'gold'], ['gold', 'silver']]
i, n = 0, 0
for _ in range(10000):
    box = boxes[randint(0, 1)]
    coin = randint(0, 1)
    if box[coin] == "gold":
        n += 1
        if box[1 - coin] == "gold":
            i += 1
print(i / n)
motto
()
Ответ на: комментарий от TDrive

С тем, что варианта два, никто не спорит. Речь о том, что эти варианты не равновероятны. Если первая монета золотая, то, скорее всего, ты в первом сундуке.

нам по условию задачи дали сундук

нам дали монету

d ★★★★
()
Ответ на: комментарий от d

Ты почему то золотые обозначаешь гласными A, E, I. То есть рассматриваешь их отдельно.

Если бы в третьем сундуке было 999 золотых и 1 серебряная

Не надо менять условия

Количество монет имеет значение.

Нет, после того как из сундука вытащили монету там остаётся только одна. Либо золотая либо серебрянная

at ★★
()

А я все-таки по Байесу попробую. У нас есть 6 монет:
11 - 1-я из 1-го сундука - золотая
21 - 2-я из 1-го - золотая
12 - 1-я из 2-го - серебряная
22 - 2-я из 2-го - серебряная
13 - 1-я из 3-го - золотая
23 - 2-я из 3-го - серебряная

Aij - мы вытащили на первом шаге i-ю монетку из j-го сундука. B - вероятность того что 2-я монетка золотая.

Ясно что
P(B|A11) = 1
P(B|A21) = 1
P(B|A12) = 0
P(B|A22) = 0
P(B|A13) = 0
P(B|A23) = 1

Теперь ввиду дополнительного условия, что 1-я монетка золотая у нас имеются такие вероятности Aij. Мы с равной вероятностью вытащили 11, 21 или 13, и с нулевой 12, 22 или 23
P(A11) = 1/3
P(A21) = 1/3
P(A12) = 0
P(A22) = 0
P(A13) = 1/3
P(A23) = 0

Теперь суммируем P(B) = Сумма(P(B|Aij)*P(A)) = 1*1/3 + 1*1/3 + 0*0 + 0*0 + 0*1/3 + 1*0 = 2/3

German_1984 ★★
()
Ответ на: комментарий от kiotoze

Мусор вывозят в один и тот же день в неделе. Сегодня мусор не вывезли. Какова вероятность того, что завтра вывезут мусор? Твой ответ 50%: «или вывезут, или не вывезут. Разве есть еще варианты?». Ничего не напоминает?

winlook38 ★★
()
Ответ на: комментарий от winlook38

fail

объясни почему. У нас осталось 2 сундука, в которых изначально были (З,С) и (З,З). Т.к. золотая уже взята осталась только одна монета

at ★★
()
Ответ на: комментарий от d

да ты прав(

#!/usr/bin/env ruby

class Chest
  def initialize(*coins)
    @coins = coins
  end

  def shuffle!
    @coins.shuffle!
  end

  def first
    @coins[0]
  end

  def second
    @coins[1]
  end
end

chests = [
  Chest.new(:gold, :silver),
  Chest.new(:silver, :silver),
  Chest.new(:gold, :gold)
]

n, i = 0, 0

1_000_000.times do
  chest = chests.sample # берем рандомный сундук
  chest.shuffle! # перемешиваем монеты
  if chest.first == :gold 
    n += 1
    i += 1 if chest.second == :gold
  end
end

puts i.to_f / n # 0.6666219734522306

TDrive ★★★★★
()
Ответ на: комментарий от Deleted

почему люди по разному понимают условие этой задачи?

Потому что не у всех работает логика.

sudo
()
Ответ на: комментарий от zolden

Потому что это же второй Питон. Надо либо перейти на третий, либо в начале написать from __future__ import correct_solutions.

Но если серьёзно, то это потому, что у тебя код не соответствует задаче. Ты сейчас проверял, насколько часто из двух коробок Питон будет случайным образом выбирать ту, в которой два золотых. И вот, вероятность действительно распределена равномерно.

from __future__ import division
from random import randint, choice
found_1_gold = 0
found_2_gold = 0
for i in xrange(10000):
    boxes = (('gold','gold'),('gold','silver'))
    selection = randint(0,1)
    if choice(boxes[selection]) == 'gold':
        found_1_gold += 1
        if boxes[selection] == ('gold', 'gold'):
                 found_2_gold += 1
print found_2_gold / found_1_gold

proud_anon ★★★★★
()
Ответ на: комментарий от at

У нас осталось 2 сундука, в которых изначально были (З,С) и (З,З)

Больше шансов что мы вытащили первую монету именно из (З,З)

TDrive ★★★★★
()
Ответ на: комментарий от at

Ты не с равной вероятностью находишься в этих вариантах. Но, повторюсь, на мой взгляд различия в трактовке постановки, а не в решении.

winlook38 ★★
()
Ответ на: комментарий от d

Первый выбор должен быть из монет (gold, gold, gold, silver), т.к. с одинаковой вероятностью тебе могла попасться любая из них.


Прочитай условие задачи ещё раз.
Потом ещё 999 раз.

Теперь, внимание, сеанс телепатии: все 1000 раз ты сходу вытянул золотую монетку.
Я прав?
Поэтому изначальные вероятности тут абсолютно не при чём

zolden ★★★★★
()
Ответ на: комментарий от proud_anon

Повторюсь повторюсь: абстрактные вероятности тут не играют роли, у нас жёстко выбранная ветка развития событий.
Ты уже стоишь с одной золотой в руке и неважно сколько и с кем ты до этого шёл к Мордору

zolden ★★★★★
()

Т.к. мы уже одну монету изяли, второй сундук (там, где две серебрянных) отпадает — его мы уже не выбрали.

Отсаётся два сундука. В одном лежит золотая, в другом серебрянная.

Выбор — один из двух. Т.е. 50/50.

Я угадал? Решение уже было?

beastie ★★★★★
()
Ответ на: комментарий от winlook38

Если уже вытащена золотая то изначально в сундуке было либо (З,С), либо (З,З). Ни один из них не может попасться с большей вероятностью

at ★★
()
Ответ на: комментарий от TDrive

потому что если монеты в сундуках перемешать то в сундуке (З, С) первой может оказаться С

Это уже не важно, по условию первой оказалась З

at ★★
()
Ответ на: комментарий от at

Вот смоделированный эксперимент) 3 сундука по 2 монеты (комментарий)

Это уже не важно, по условию первой оказалась З

В том то и дело что важно.

Мы выбираем сундук случайным образом и вслепую вытаскиваем от туда монетку.

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от at

Если уже вытащена золотая то изначально в сундуке было либо (З,С), либо (З,З). Ни один из них не может попасться с большей вероятностью

Из второго сундука больше шанс вытащить золотую монету. Так почему же он не может попасться с большей вероятностью?

melkor217 ★★★★★
()
Ответ на: комментарий от at

Короче там про (С,С) можно забыть, а дальше задача сводится к тому как часто мы будем попадать в (З,З) из (З,З) и (З, С) при этом половину попаданий в (З, С) когда первая С мы так же не учитываем как и (С, С)

TDrive ★★★★★
()
Ответ на: комментарий от zolden

у нас жёстко выбранная ветка развития событий. Ты уже стоишь с одной золотой в руке и неважно сколько и с кем ты до этого шёл к Мордору

Совершенно верно. Какая будет следующая монета, зависит от того, в какой ветке развития событий ты находишься: в первом сундуке или в третьем. Ты этого не знаешь. И вот, внимание: вероятность этого зависит от того, сколько и с кем ты до этого шёл в Мордор.

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 1)
Ответ на: комментарий от TDrive

ТС > Мы выбираем сундук случайным образом и вслепую вытаскиваем от туда монетку. Она оказывается золотой.

at ★★
()
Ответ на: комментарий от zolden

Толдычащие про 66%, забывают об условии:

Какова вероятность того, что следующая вытащенная из того же сундука монетка — тоже золотая?

Т.ч. про первую монету можно забыть. У нас два сундука и две монеты.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от at

Вот как я себе представляю различия в трактовке условий задачи:
Одни, при ответе на вопрос, исходят из того, что учитывают на первом этапе и опыт вытягивания серебра, тогда при попадании в золото мы чаще будем оказываться в сундуке с двумя золотыми монетами.
Другие исходят из того, что не учитывают опыт вытягивания серебра, поэтому они тупо всегда попадают либо в сундук с двумя золотыми, либо в сундук с разными, тогда вероятность будет одинаковой.
Я придерживаюсь первой трактовки.

winlook38 ★★
()
Ответ на: комментарий от winlook38

Одна монета уже золотая — вероятность 100%. Т.ч. всё таки, если внимательно взглянуть на постановку задачи — вторая трактовка — 50%.

beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.