我正在尝试在玩二十一点时发现您获得2张A的可能性。我不确定如何设置示例函数,但我想,因为我只有两种可能,要么有两个A,要么没有两个A,那么我将使用1表示是,使用-1表示否。我以为您可以将replace设置为false,因为我们正在使用一个牌组,但这给了我一个不正确的长度错误。如果我能对我要去的地方找到方向,那就太好了。
set.seed(1)
n <- 1000
two_aces <- function(n){
x <- sample(c(1,-1), 2, replace = TRUE, prob = c(4/52,48/52))
}
S <- replicate(10000, two_aces(1000))
mean(S)
mean(S > 0)
我计算了期望值以与平均值进行比较,但是我得到-58.74,这与代码中的-0.85平均值相差甚远。
如果改为使用{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
确定这两个都是ace,然后可以是
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个样本量。)