计算 R 中两次掷骰总和的概率
Calculate the probability in R for sum of two dice rolls
我有一个矩阵,由骰子 1 和骰子 2 的总和组成,或者 Y = D1 + D2
outer(1:6, 1:6, "+")
输出为:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 3 4 5 6 7
[2,] 3 4 5 6 7 8
[3,] 4 5 6 7 8 9
[4,] 5 6 7 8 9 10
[5,] 6 7 8 9 10 11
[6,] 7 8 9 10 11 12
我如何将它放在一个名为Y的数据框中,其中包含总和以及每个总和的概率,例如:
Sum pSum
2 1/36
3 2/36
4 3/36
.
.
.
12 1/36
当我计算 sum(Y$pSum) 时,它将等于 1
我们可以通过将 outer
值转换为 vector
('Sum') 和频率比例 (prop.table
) ( table
) 作为 'pSum'
v1 <- c(m1)
data.frame(Sum = v1, pSum = as.numeric(prop.table(table(v1))[as.character(v1)]))
-输出
Sum pSum
1 2 0.02777778
2 3 0.05555556
3 4 0.08333333
4 5 0.11111111
5 6 0.13888889
6 7 0.16666667
7 3 0.05555556
8 4 0.08333333
9 5 0.11111111
10 6 0.13888889
11 7 0.16666667
12 8 0.13888889
13 4 0.08333333
14 5 0.11111111
15 6 0.13888889
16 7 0.16666667
17 8 0.13888889
18 9 0.11111111
19 5 0.11111111
20 6 0.13888889
21 7 0.16666667
22 8 0.13888889
23 9 0.11111111
24 10 0.08333333
25 6 0.13888889
26 7 0.16666667
27 8 0.13888889
28 9 0.11111111
29 10 0.08333333
30 11 0.05555556
31 7 0.16666667
32 8 0.13888889
33 9 0.11111111
34 10 0.08333333
35 11 0.05555556
36 12 0.02777778
如果我们只想要汇总输出
stack(prop.table(table(v1)))[2:1]
# ind values
#1 2 0.02777778
#2 3 0.05555556
#3 4 0.08333333
#4 5 0.11111111
#5 6 0.13888889
#6 7 0.16666667
#7 8 0.13888889
#9 10 0.08333333
#10 11 0.05555556
#11 12 0.02777778
哪里
m1 <- outer(1:6, 1:6, FUN = `+`)
或者另一种选择是 expand.grid
stack(prop.table(table(do.call(`+`, expand.grid(rep(list(1:6), 2))))))
我有一个矩阵,由骰子 1 和骰子 2 的总和组成,或者 Y = D1 + D2
outer(1:6, 1:6, "+")
输出为:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 3 4 5 6 7
[2,] 3 4 5 6 7 8
[3,] 4 5 6 7 8 9
[4,] 5 6 7 8 9 10
[5,] 6 7 8 9 10 11
[6,] 7 8 9 10 11 12
我如何将它放在一个名为Y的数据框中,其中包含总和以及每个总和的概率,例如:
Sum pSum
2 1/36
3 2/36
4 3/36
.
.
.
12 1/36
当我计算 sum(Y$pSum) 时,它将等于 1
我们可以通过将 outer
值转换为 vector
('Sum') 和频率比例 (prop.table
) ( table
) 作为 'pSum'
v1 <- c(m1)
data.frame(Sum = v1, pSum = as.numeric(prop.table(table(v1))[as.character(v1)]))
-输出
Sum pSum
1 2 0.02777778
2 3 0.05555556
3 4 0.08333333
4 5 0.11111111
5 6 0.13888889
6 7 0.16666667
7 3 0.05555556
8 4 0.08333333
9 5 0.11111111
10 6 0.13888889
11 7 0.16666667
12 8 0.13888889
13 4 0.08333333
14 5 0.11111111
15 6 0.13888889
16 7 0.16666667
17 8 0.13888889
18 9 0.11111111
19 5 0.11111111
20 6 0.13888889
21 7 0.16666667
22 8 0.13888889
23 9 0.11111111
24 10 0.08333333
25 6 0.13888889
26 7 0.16666667
27 8 0.13888889
28 9 0.11111111
29 10 0.08333333
30 11 0.05555556
31 7 0.16666667
32 8 0.13888889
33 9 0.11111111
34 10 0.08333333
35 11 0.05555556
36 12 0.02777778
如果我们只想要汇总输出
stack(prop.table(table(v1)))[2:1]
# ind values
#1 2 0.02777778
#2 3 0.05555556
#3 4 0.08333333
#4 5 0.11111111
#5 6 0.13888889
#6 7 0.16666667
#7 8 0.13888889
#9 10 0.08333333
#10 11 0.05555556
#11 12 0.02777778
哪里
m1 <- outer(1:6, 1:6, FUN = `+`)
或者另一种选择是 expand.grid
stack(prop.table(table(do.call(`+`, expand.grid(rep(list(1:6), 2))))))