概念的矢量元素

时间:2017-06-19 20:22:15

标签: r vector sum

我有一个名为numb的概率向量,就像这个

Vector elements

就像你可以看到的,这个向量元素的总和是1,我必须生成一个0到1之间的随机数,并得到这个向量的元素,不能克服这个随机数,例如:

随机数生成:0.01 我会得到元素,因为水介于0.09和0.11之间。我附上一个图形示例

Example

我不知道如何获得这种概率的元素。

1 个答案:

答案 0 :(得分:0)

我不打算输入您的所有数据,因此我将使用类似的小例子:

set.seed(2017)
probabilidad = runif(5)
probabilidad= probabilidad/sum(probabilidad)
names(probabilidad) = LETTERS[1:5]
probabilidad
         A          B          C          D          E 
0.30918062 0.17969799 0.15695684 0.09655216 0.25761238 
sum(probabilidad)
[1] 1

我们可以使用cumsum设置矢量来进行所需的选择。但cumsum将给出区域的上限,我们想要下限,所以我们稍微调整输出。

Test = c(0, cumsum(probabilidad)[-length(probabilidad)])
names(Test) = names(probabilidad)
Test
        A         B         C         D         E 
0.0000000 0.2533938 0.5129561 0.5922145 0.8222417 

现在,您可以根据分布轻松测试随机数。

(Selector = runif(1))
[1] 0.5190959
names(probabilidad)[max(which(Selector > Test))]
[1] "C"