Головоломка | Апокалипсис
Головоломка:
В новом постапокалиптическом мире королева мира отчаянно озабочена рождаемостью. Поэтому она постановляет, что все семьи должны убедиться, что у них есть одна девочка, иначе им грозят огромные штрафы. Если все семьи будут придерживаться этой политики, то есть будут продолжать иметь детей до тех пор, пока у них не появится одна девочка, после чего они немедленно остановятся, то каким будет гендерное соотношение в новом поколении? (Предположим, что шансы того, что кто-то родит мальчика или девочку при любой данной беременности, равны.) Решите это логически, а затем напишите его компьютерную симуляцию.
Подсказки:
- Заметьте, что в каждой семье будет ровно одна девочка.
- Подумайте о том, чтобы написать каждое семейство как последовательность букв B и G.
Решение :
- Если каждая семья соблюдает эту политику, то в каждой семье будет последовательность из нуля или более мальчиков, за которыми следует одна девочка.
- То есть, если «G» указывает на девочку, а «B» указывает на мальчика, последовательность детей будет выглядеть как одна из G; БГ; ББГ; ВВВГ; BBBBG; и так далее.
Математически :
- Он может определить вероятность для каждой гендерной последовательности.
- Р(Г) = 1/2-
То есть в 50% семей сначала родится девочка. У остальных будут еще дети. - Р(БГ) = 1/4-
Из тех, у кого есть второй ребенок (а это 50%), у 50% в следующий раз родится девочка. - Р(ББГ) = 1/8-
Из тех, у кого третий ребенок (а это 25%), у 50% в следующий раз родится девочка. И так далее.
- Р(Г) = 1/2-
- Принято считать, что в каждой семье ровно одна девочка.
- Сколько мальчиков в среднем в каждой семье? Чтобы вычислить это, давайте посмотрим на математическое ожидание числа мальчиков.
- Ожидаемое значение количества мальчиков — это вероятность каждой последовательности, умноженная на количество мальчиков в этой последовательности.
Ниже представлена таблица, иллюстрирующая математическое ожидание числа мальчиков:
| Последовательность | Нет мальчиков | Вероятность | Кол-во мальчиков * Вероятность |
| грамм | 0 | 1/2 | 0 |
| БГ | 1 | 1/4 | 1/4 |
| ББГ | 2 | 1/8 | 2/8 |
| толстушка | 3 | 1/16 | 3/16 |
| BBBBG | 4 | 1/32 | 4/32 |
| BBBBG | 5 | 1/64 | 5/64 |
| BBBBBBG | 6 | 1/128 | 6/128 |
- Или, другими словами, это сумма от i до бесконечности i, деленная на 2 i .
Логически :
- Один из способов подумать об этом — представить, что мы помещаем все гендерные последовательности каждой семьи в одну гигантскую строку. Таким образом, если в семье 1 есть BG, в семье 2 — BBG, а в семье 3 — G, это будет BGBBGG.
- Как только ребенок рождается, его пол (B или G) может быть добавлен к строке.
- Какова вероятность того, что следующим символом будет G? Что ж, если шансы родить мальчика и девочку одинаковы, то шансы на то, что следующим персонажем будет G, равны 50%.
- Следовательно, примерно половина струны должна быть G, а половина — B, что дает равное соотношение полов.
- Это на самом деле имеет большой смысл. Биология не изменилась.
- Половина новорожденных — девочки, половина — мальчики.
- Соблюдение некоторых правил о том, когда прекращать иметь детей, не меняет этого факта.
- Таким образом, соотношение полов составляет 50% девочек и 50% мальчиков.
Ниже приведен псевдокод, рассчитывающий вероятность наличия в семье девочки:
double r unNFamilies (int n)
{
int boys = 0;
int girls = 0;
for (int i = 0; i < n; i++)
{
int [] genders = runOneFamilY();
girls += genders[0];
boys += genders[1];
}
return girls / (double) (boys + girls);
}
int[] runOneFamily()
{
Random random = new Random();
int boys = 0;
int girls = 0;
while (girls == 6)
{
// until we have a girl
if (random.nextBoolean ())
{
// girl
girls += 1;
}
else
{
// boy
boys += 1;
}
}
int[] genders = {girls, boys};
return genders;
}Если этот псевдокод выполнить на больших значениях n, то результат будет очень близок к 0,5.