有效的概率权重随机数组,总和为1

时间:2013-11-16 12:02:56

标签: r random probability

我需要一些非常简单的东西,在我看来,我的解决方案有太多的步骤(考虑到R已经完成统计):

我需要的是N个概率权重(在0和1之间)的数组,总计为1。什么是简单和/或有效的解决方案?

我的解决方案:

N <- 40
weights <- runif(40)
f <- 1/sum(weights) 
weights <- f*weights
print(sum(weights))

1 个答案:

答案 0 :(得分:1)

解决方案:

您可以使用prop.table函数和runif函数:

weights <- prop.table(runif(N))

与跑步相同

w <- runif(N); weights <- w / sum(w)

说明:

  1. runif函数生成N随机数,范围从0到1
  2. prop.table重新缩放它们,使总和等于1(与w / sum(w)相同)