Вопросы по комбинаторике: почему меняется вероятность 50%?
Есть две задачи по комбинаторике, которые я решаю просто так из интереса. В процессе манипуляции наткнулся на несколько интересных особенностей, которые не могу объяснить, так-как не имею достаточно знаний. Может кто-то сможет потратить свое время и объяснить в чем именно разгадка? Прошу заранее не сердиться, если вопросы и методы, которые я использую, окажутся совсем глупыми - я просто занимаюсь чем-то интересным, как если бы просто швырял камни в море и глядел, как они поднимают брызги.
Итак, две задачи.
1) Классическая. Кидаем монету и угадываем: "орел" или "решка". Пытаемся улучшить результаты успешного угадывания.
2) Человеку дают два конверта с деньгами на выбор. Сумма денег в первом конверте выбирается абсолютно случайно, а во второй всегда помещается сумма в два раза больше. То есть, если в первый конверт решили положить $5, то во втором будет $10. Человек, выбрав конверт, может его открыть. Далее он может отказаться от первого конверта, и взять второй, или оставить первый и завершить раунд. После завершения раунда, рефери показывает суммы в обоих конвертах. Суть - угадывать конверт с бОльшим количеством денег чаще.
Выборка в каждой задаче была разная, я пробовал до 1 000 000 000 (миллиарда).
Задача №1.
Если я делаю скрипт с простым рандомным выбором, я получаю результаты 50% с небольшим плюсом или минусом. То есть, 49.99999 или 50.00001 (чем большее количество выборок, тем больше стремимся к 50%). Тут все понятно. Другое дело начинается, если я начинаю считать количество "решек" и "орлов". И при выборе, если раньше выпало больше "решек", я выбираю "орла". А если раньше выпадало больше "орлов", я выбираю "решку".
Происходит вещь, которую я не могу понять: величина удачных угадываний становится всегда выше 50%. Пусть на небольшой "хвостик" (далее я буду называть его +K (положительный) или -K (отрицательный)), но ситуация 50%-K перестает случаться. Во всяком случае за несколько суток тестов, я ни разу не смог получить 50%-K.
Вопрос: это закономерно, или все дело в ограниченности псевдо-генератора случайных чисел языка программирования?
Задача №2.. К сожалению длинное объяснение, пытался сократить, как только мог.
Выбор конверта случайным образом.
Вижу сумму $5. Значит во втором конверте либо $10, либо два доллара и 50 центов. Решил оставить себе $5. Рефери соглашается с моим выбором, открывает второй конверт, а там $10. Я проиграл. Игра продолжается и продолжается.
Если я буду постоянно выбирать случайный конверт без всякой стратегии, я вновь получаю 50%. С +K или с -K.
Выбор конверта с учетом среднего арифметического от сумм в конвертах.
Для того, чтобы улучшить результаты угадывания, я начинаю записывать две величины: количество попыток и среднее арифметическое от сумм, которые есть в конвертах. Затем я руководствуюсь правилом: оставляю конверт, если сумма лежащая в нем больше средней арифметической всех сумм, или меняю конверт, если денег в конверте меньше.
Симуляция из трех попыток:
Конверты:
- $5 и $10
- $20 и $40
- $20 и $40
Конверты, которые мне достаются первыми, содержат суммы: 5, 20 и 20.
В первом случае, я оставляю первый конверт $5 (так-как среднее еще 0) и проигрываю $10.
Во втором случае я оставляю $20 (так-как среднее 7,5) и проигрываю $40.
В третьем случае, я отказываюсь от первого конверта с $20 (так-как среднее 37,5) и выигрываю $40.
В зависимости от ширины диапазона rand(0, X) степень угадывания доходит аж до 75%. То есть, среднее арифметическое быстро определяет границы диапазона сумм в конвертах, которые неизвестны, но являются конечными, и это означает, что все числа больше X/2 всегда бОльшие, что отражается на статистике угадываемых сумм.
Конечно, если брать очень большой отрезок с космическими числами, степень угадывания снова начинает стремиться к 50%. Но мы все равно всегда получаем 50%+K.
Вопрос абсолютно такой же, как и к первой задаче: это закономерно, или все дело в ограниченности псевдо-генератора случайных чисел языка программирования?
1) Проблема в том что компьютерные (программные) генераторы - это генераторы псевдослучаных чисел, а не истинно случайных.
2) Проблема в том что вы только на словах можете взять "очень большой отрезок с космическими числами". По факту вы ограничиваете себя просто "большим числом", отсюда и берется некоторое K.
ИМХО