🎲 Непереходные кости: решение проблемы 🎲

Когда вы разбираете проблему, функции делают всю работу. Все, что вам нужно сделать, это правильно настроить его. Следуйте синему тексту и пролистайте, чтобы увидеть, как мы можем разбить вопрос на более простые подзадачи.

🎯Проблема: нетранзитивные игральные кости🎯

Предположим, что игральные кости 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% 🎲🎲

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