🎲 Непереходные кости: решение проблемы 🎲
Когда вы разбираете проблему, функции делают всю работу. Все, что вам нужно сделать, это правильно настроить его. Следуйте синему тексту и пролистайте, чтобы увидеть, как мы можем разбить вопрос на более простые подзадачи.
🎯Проблема: нетранзитивные игральные кости🎯
Предположим, что игральные кости A и B брошены. Покажите, что у A больше шансов получить большее число.
P(A > B) > 0.50
Где {A›B} обозначает событие, когда A побеждает B. Теперь покажите, чтоесли выпадают B и C, B с большей вероятностью получит большее число. И, что примечательно, если выпадают C и A, C с большей вероятностью получит большее число.
Подсказка: условие на исход кубика
✅☑️ Я всегда могу выбрать кубик, который с большей вероятностью побьет ваш. ☑️✅
- Если вы выберете A, я выберу C (C › A)
- Если вы выберете B, я выберу A (A › B)
- Если вы выберете C, я выберу B (B › C)
Мы выбираем числа на кубиках, чтобы контролировать шансы.
- Die A = {3, 3, 5, 5, 7, 7}
- Die B = {2, 2, 4, 4, 9, 9}
- Die C = {1,1,6,6,8,8}
🎲 Бросать кости 🎲
Нам нужен способ бросить кости,
A <- sample(c(3, 3, 5, 5, 7, 7), 1, replace=T) B <- sample(c(2, 2, 4, 4, 9, 9), 1, replace=T) C <- sample(c(1, 1, 6, 6, 8, 8), 1, replace=T)
Затем мы можем попытаться сравнить вероятность каждого игрального кубика…
success <- if(C > A) 1 else 0 success <- if(A > B) 1 else 0 success <- if(B > C) 1 else 0
⚠️⚠️⚠️ Обратите внимание, что задача напрямую не требует от нас повторения или моделирования в течение некоторого количества повторений, однако, поскольку мы пытаемся получить значения, которые немного выше, мы можем использовать повторения, чтобы попытаться получить как можно большую разницу ⚠️⚠️⚠️
🔄 Повторение процесса 🔄
Давайте создадим способ воспроизвести все то, что должно произойти, что мы перечислили выше⬆️⬆️⬆️
Давайте воспроизведем эти образцы 10 000 раз:
n <- 1000
Инициализируйте вектор для хранения всех результатов:
simlist <- numeric(n)
Цикл это:
for (i in 1:n) {}
СЕЙЧАС собери все вместе
#2.28 (a) N <- 1000 n <- 0 for (i in 1:N){ X <- sample(1:365, 23, replace = TRUE) if(2 %in% table(X)){ n <- n + 1 } } n/N ## [1] 0.512
C > A
n <- 10000 simlist <- numeric(n) for (i in 1:n){ C <- sample(c(1,1,6,6,8,8),1,replace=T) # roll A <- sample(c(3,3,5,5,7,7),1,replace=T) # roll success <- if(C > A) 1 else 0 # check simlist[i] <- success # record each check } mean(simlist) # Proportion of trials that are successes ## [1] 0.5629
🎲🎲 Вероятность C › A больше 50% 🎲🎲
A > B
n <- 10000 simlist <- numeric(n) for (i in 1:n) { # you get the point... }
🎲🎲 Вероятность того, что B › C больше 50% 🎲🎲
B > C
n <- 10000 simlist <- numeric(n) for (i in 1:n) { # you get the point... }
🎲🎲 Вероятность того, что C › A больше 50% 🎲🎲
И вот оно! Проблема разбита на управляемые части, решаемые шаг за шагом. Продолжай! 🎲🎲