【问题标题】:Efficient random array of probability weights that sum 1总和为 1 的概率权重的有效随机数组
【发布时间】:2013-11-29 20:33:33
【问题描述】:

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

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

我的解决方案:

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

【问题讨论】:

  • prop.table(runif(N))
  • 太棒了!你为什么不回答让我接受?
  • 您正在添加一个额外的步骤。为什么不只是; weights &lt;- runif(40); w &lt;- weights / sum(weights)?

标签: r random probability


【解决方案1】:

解决方案:

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

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

和跑步一样

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

说明:

  1. runif 函数生成 N 0 到 1 范围内的随机数
  2. prop.table 重新调整它们,使 sum 等于 1(与 w / sum(w) 相同)

【讨论】:

  • 谢谢,在 cmets 中,但发帖者懒得发布答案。在这里你去打勾。
猜你喜欢
  • 2017-04-10
  • 2022-01-08
  • 2019-04-07
  • 2013-07-10
  • 2021-08-15
  • 2017-05-16
  • 2017-11-26
  • 1970-01-01
相关资源
最近更新 更多