Использование компьютерного моделирования и визуализации на Python для анализа игрового сегмента Джеймса Кордена «Знай для своего ряда». Это подстроено?

В фильме Джеймса Кордена "Late Late Show" есть захватывающий игровой сегмент под названием "Know For Your Row". У него есть увлекательный статистический аспект, для раскрытия которого требуется помощь компьютерного моделирования и визуализации.

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

Пойдем!

Игра

Сцена устроена так:

Где каждая ячейка представляет собой место. Джеймс Корден стартует с места 1А с надписью Старт. Корден задает 1А простой вопрос, например «где находится Эйфелева башня» или «назовите четырех черепах-подростков-мутантов».

Если 1A правильно задает вопрос, Корден перемещает один вправо и задает вопрос 2A. Однако, если 1A задает вопрос неправильно, то Корден перемещается на одну строку вверх до 1B (в то время как аудитория кричит: «Двигайся! Деньги!»). Этот образец продолжается во всей аудитории.

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

Например, на диаграмме выше сиденья с 1А по 6А ответили на вопрос правильно. Поскольку 7A ответил неправильно, Корден перемещает вопрос до 7B, и тот отвечает правильно.

Следовательно, Корден движется вправо до 10B, который отвечает неправильно, поэтому Корден перемещается на одну строку вверх, и, следовательно, поскольку последний человек в строке D (15D) ответил на заданный им вопрос правильно, все в строке D выиграли 100 долларов.

Если кто-то в последнем ряду (строка E) отвечает неправильно, нет строки, в которую можно было бы перейти, поэтому деньги никто не получает. (Деньги будут добавлены к игровому пулу на следующей неделе, так что победитель игры на следующей неделе получит по 3000 или 200 долларов каждый).

Еще одно замечание: последний человек, который правильно ответит на вопрос, получает либо 750 долларов для себя (таким образом, никто из его ряда не получает денег), либо 100 долларов для всех в ряду. Эта деталь не важна для нашего моделирования.

Эта игра интересна тем, что не совсем ясно, какая строка имеет преимущество, и есть ли оно вообще, но статистика и вероятность могут помочь нам.

Почему компьютерное моделирование?

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

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

Кроме того, для вычисления очень, очень, v очень малых вероятностей требуется гораздо больше вычислительного пространства, чем для простых операторов if, elif и else с однозначными числами.

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

Вместо того, чтобы самому выполнять кропотливую работу с ошибками, позвольте компьютеру выполнить ее сам!

В случае сомнений позвольте компьютеру сделать это за вас ...

Компьютерное моделирование

Я собрал простую симуляцию Python, которая запускает 100000 симуляций. Я оставил значение P- или вероятность того, что кто-то правильно ответит на заданный вопрос, на уровне 95% и случайность, которая является коэффициентом, добавляемым к значению P-. для учета различий в знаниях аудитории, в 3.

После достижения случайно выбранного значения от 1 до 100, число, взятое из гауссовского / нормального распределения между -r и r, где r представляет значение случайности.

(Примечание: после многократного запуска моделирования с изменением r, кажется, есть небольшая значительная разница. В этом есть смысл, значения r должны компенсироваться.)

Следующий код преобразует словарь в pandas DataFrame для построения графика.

import pandas as pd
plot = pd.DataFrame({'Row':list(winning_rows.keys()),'Count':list(winning_rows.values())})

С помощью следующего кода мы можем построить график результатов:

import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(13,5))
sns.barplot(plot['Row'],plot['Count'],palette = 'viridis')

Первая строка почти всегда выигрывает с P = 0,95. Давайте посмотрим на результаты, когда P будет ниже, например 0,75.

Интересно! Он полностью перевернут. Построим график результатов для P = 0,85.

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

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

Кажется, что первая строка имеет огромное преимущество, начиная с P -значения 0,94. Отсюда кажется, что вторая строка имеет стабильно хорошее выходное значение для различных значений P-.

После просмотра сегментов Cordon «Знай для своего ряда» значения вопроса P- в среднем составляют от 0,8 до 0,9.

Ниже приведены средние значения для каждой строки с визуализированными значениями P- от 0,82 до 0,87:

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

Дополнительное интересное примечание

Есть несколько интересных результатов, которые можно получить, отрегулировав размер сидений (m на n) и соответствующим образом отрегулировав значение P- - нормальное распределение!

Спасибо за прочтение!

Вывод: если вы когда-нибудь лично увидите шоу Джеймса Кордена во время «Know For Your Row», то лучшим местом для сидения будет третий ряд!