【问题标题】:Calculate the probability in R for sum of two dice rolls计算 R 中两个骰子总和的概率
【发布时间】:2021-07-14 22:58:27
【问题描述】:

我有一个由骰子 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

【问题讨论】:

    标签: r probability dice


    【解决方案1】:

    我们可以通过将outer 值转换为vector('Sum')和频率(prop.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
    

    在哪里

    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 并且每个都有指定的概率?现在它正在列出矩阵中的每个结果。
    • 我所期望的。谢谢。
    猜你喜欢
    • 2015-07-03
    • 2021-09-23
    • 2020-09-02
    • 2013-12-29
    • 2020-06-17
    • 2020-02-12
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多