【问题标题】:Generate a normal distribution within certain limits in R在 R 中生成特定范围内的正态分布
【发布时间】:2015-11-24 07:17:25
【问题描述】:

我想生成一个平均值为 120,标准差为 20 的正态分布。但我需要将值限制为 [0, 150]。我该怎么办?

scores <- rnorm(1000, 120, 20)

【问题讨论】:

  • 您可以在this 询问和回答类似问题。
  • @Etienne “我知道如何生成均值 = 1 和 sd = 1 以及 500 个数据点的正态分布。”让我哈哈大笑。向下滚动以查看解决方案!
  • qnorm 的矢量化方法确实很优雅!

标签: r normal-distribution


【解决方案1】:

您可以使用递归方法来代替 while 循环:

foo = function(n, m, v, up, down)
{
    if(n==0) return(numeric(n))
    vec = Filter(function(x) x>=down & x<=up, rnorm(n, m, v))
    c(vec, foo(n-length(vec), m, v, up, down))
}

result = foo(1000, 120, 20, 150, 0)

【讨论】:

  • 你可以去掉l参数,因为你不使用它
猜你喜欢
  • 2017-01-08
  • 2013-05-25
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
相关资源
最近更新 更多