用R计算两个骰子点数之和的概率

3

我有一个矩阵,由两个骰子的点数之和构成,即 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。

1个回答

5

我们可以通过将outer的值转换为vector ('Sum'),并将频率(table)的比例(prop.table)作为'pSum'来创建一个data.frame

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

where

m1 <- outer(1:6, 1:6, FUN = `+`)

另一个选项是 expand.grid

stack(prop.table(table(do.call(`+`, expand.grid(rep(list(1:6), 2))))))

我该如何使第一列的数字不重复?例如,只有2、3、4、5、6、7、8、9、10、11、12,并且每个数字都有一个指定的概率?目前它正在矩阵中列出每个结果。 - Jake Parker
1
我期望的。谢谢。 - Jake Parker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接