Если вместо этого мы используем {0,1} для классификаций «нет / да», то ожидаемое значение должно быть
1*(4/52)*(3/51)
, которое действительно просто закорочено от
1*(4/52)*(3/51) + 0*(1 - (4/52)*(3/51))
Если мы используем вашу классификацию {-1,1}, мы можем перейти от этого к
1*(4/52)*(3/51) + (-1)*(1 - (4/52)*(3/51))
(4/52)*(3/51) + (-1 + (4/52)*(3/51))
(4/52)*(3/51) + -1 + (4/52)*(3/51)
(4/52)*(3/51) + (4/52)*(3/51) - 1
2*(4/52)*(3/51) - 1
(Это также имеет смысл, так как спред от 1 до -1 является двойным (2*
) оригиналомдиапазон и смещение на единицу (-1
).)
Когда я симулирую карты с простыми целыми числами (звучит так, как будто я делаю это часто ... хотя на самом деле это не так), я предпочитаю вместо этого кодировать из 0:51
,поскольку модуль-математика дает нам простые «костюм» и «номинал»:
0:51 %/% 13
# [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3
0:51 %% 13
# [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0
# [41] 1 2 3 4 5 6 7 8 9 10 11 12
, где 0
- туз, а 12
- король. Исходя из этого, мы можем случайным образом вытянуть две карты и узнать их масть (при необходимости) и номинальную стоимость довольно просто:
set.seed(3)
s <- sample(0:51, size = 2)
cbind(suit = s %/% 13, face = s %% 13)
# suit face
# [1,] 0 8 # nine of suit 0
# [2,] 3 2 # three of suit 3
Определить, если это оба туза, тогда может быть all(s %% 13 < 1)
.
set.seed(250)
s <- sample(0:51, size = 2)
cbind(suit = s %/% 13, face = s %% 13)
# suit face
# [1,] 1 0 # ace of suit 1
# [2,] 3 0 # ace of suit 3
all(s %% 13 < 1)
# [1] TRUE
Таким образом, чтобы оценить теоретическую вероятность, мы можем сделать
set.seed(2)
mean(replicate(1000000, all((sample(0:51, size=2) %% 13) < 1)))
# [1] 0.004498
(4/52)*(3/51)
# [1] 0.004524887
, который в этом случае рассчитывается так же, как и ожидаемое значение, когда классификация равна 0 = нет и 1 = да,Для того чтобы использовать {-1,1}, ожидаемое значение будет
set.seed(2)
2*mean(replicate(1000000, all((sample(0:51, size=2) %% 13) < 1))) - 1
# [1] -0.991004
(я не думаю, что вы должны включать размер выборки 1000 в это ожидаемое значение.)