如何基于4个不同的概率生成一个值?

时间:2019-02-19 00:22:12

标签: r

我在R上还很陌生,但是我知道重要的是1行计算。

我有一个变量,我希望它是基于某些概率的四个结果之一。有没有一种快速简便的方法来计算这个?

A' && B 21%
A && B 27%
A && B' 3%
A' && B' 49%

我认为我需要做一些涉及

的事情
runif() 

但是我不确定。

1 个答案:

答案 0 :(得分:1)

从类别中随机抽取的方法是sample函数。这说明了为什么set.seed可能对代码可重现有用:

   > mysample <- sample( c("notA && B", "A && B", "A && notB", "notA && notB"), size=100, prob=c(.21, .27, .03, .49), replace=TRUE)
> table(mysample)
mysample
      A && B    notA && B notA && notB 
          34           21           45 
> mysample <- sample( c("notA && B", "A && B", "A && notB", "notA && notB"), size=100, prob=c(.21, .27, .03, .49), replace=TRUE)
> table(mysample)
mysample
      A && B    notA && B notA && notB 
          25           13           62 
> mysample <- sample( c("notA && B", "A && B", "A && notB", "notA && notB"), size=100, prob=c(.21, .27, .03, .49), replace=TRUE)
> table(mysample)
mysample
      A && B    A && notB    notA && B notA && notB 
          26            3           24           47 

更好的练习:

set.seed(123)
mysample <- sample( c("notA && B", "A && B", "A && notB", "notA && notB"), 
                    size=100, prob=c(.21, .27, .03, .49), replace=TRUE)

每两条线同时运行,结果将相同。

> table(mysample)
mysample
      A && B    A && notB    notA && B notA && notB 
          23            2           22           53