Реализация простого алгоритма (для расчета вероятности) - PullRequest
14 голосов
/ 15 декабря 2009

Меня попросили (как часть домашней работы) разработать Java-программу, которая выполняет следующие действия:


В основном есть 3 карты:

  • Черный цвет с обеих сторон
  • Красного цвета с обеих сторон
  • черный с одной стороны, красный с другой стороны

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

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


Однако мне сказали, что мой код неверен (по алгоритму) ... очевидно, ответ не должен быть 0,50. Я сделал ошибку, пытаясь понять алгоритм?

Может кто-нибудь указать мне правильное направление, пожалуйста? (Я не прошу вас предоставить мне полностью работающую реализацию, просто о том, как должен работать алгоритм).


Эта статья была очень полезна: https://blog.codinghorror.com/finishing-the-game/

Ответы [ 6 ]

8 голосов
/ 15 декабря 2009

Это может не помочь с алгоритмом, но я сам получу ответ:

Когда вы берете случайную карту и кладете ее на стол, возможны шесть одинаково вероятных вещей:

  1. Вы выбираете карту R / R и помещаете ее красной стороной вверх.
  2. Вы выбираете карту R / R и помещаете другую красную сторону вверх.
  3. Вы выбираете карту B / R и кладете ее черной стороной вверх.
  4. Вы выбираете карту B / R и кладете ее красной стороной вверх.
  5. Вы выбираете карту B / B и кладете ее черной стороной вверх.
  6. Вы выбираете карту B / B и помещаете другую черную сторону вверх.

Из этих шести событий 3 из 6 приводят к тому, что на столе появляется черная сторона вверх.

Из этих трех событий ровно в двух из них другая сторона карты черная.

Поэтому ответ на вопрос "Какова вероятность того, что другая сторона также черная?" 2/3 .

Ваш алгоритм не работает, потому что вы считаете только карту black_black, которая появляется как одно событие, когда на самом деле их два.

7 голосов
/ 15 декабря 2009

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

4 голосов
/ 15 декабря 2009

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

Следовательно, вероятность того, что другое лицо является черным, на самом деле составляет 2/3.

0 голосов
/ 16 декабря 2009

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

Это оставляет только красную / черную и черную / черную карту. Опять же, нам не нужно больше обращать внимания, если красный / черный нанесен красной стороной вверх. Остальные возможности:

  1. красный / черный, черный вверх
  2. черный / черный, первая сторона вверх
  3. черный / черный, вторая сторона вверх
Поскольку два из этих трех имеют другую сторону черного цвета, вероятность составляет два из трех.
0 голосов
/ 15 декабря 2009

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

Проблема, которую вы не реализовали правильно: учитывая, что вы смотрите на карту черного цвета на этом лице, каковы шансы, что она красная на другом лице?

Обратите внимание, что есть две черные карты, но три черных лица.

0 голосов
/ 15 декабря 2009

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

...