如何在特定的时间间隔内生成正态分布的随机数?

kit*_*ty -1 random r normal-distribution

我想在区间[-50,50]中生成100个正态分布的随机数.但是在下面的代码中,生成的随机数范围是[-50,50].

n <- rnorm(100, -50,50)
plot(n)
Run Code Online (Sandbox Code Playgroud)

den*_*nis 5

你的问题是有问题的,因为你似乎并不完全理解这个rnorm功能.

rnorm(100, -50,50)
Run Code Online (Sandbox Code Playgroud)

生成由以-50为中心的正态分布给出的100个点的样本,标准差为50.因此,您需要通过以下方式指定您想要的内容: 100 normally distributed random number in interval [-50,50].在正态分布中,您没有给出上限和下限:绘制的概率从不为0,但是当与平均值相差几个标准偏差时,绘制的概率非常低.所以:

  • 或者你想要一个以0为中心的正态分布,标准偏差为50,答案是rnorm(100, 0,50),但你的值大于50且小于-50.
  • 或者你实际上想要一个没有[-50,50]范围之外的值的正态分布,在这种情况下你仍然需要给出一个标准差,你需要将值绘制在范围之外.你可以这样做: sd <- 50 n <- data.frame(draw = rnorm(1000, 0,sd)) final <- sample(n$draw[!with(n, draw > 50 | draw < -50)],100)

以下是它为2种不同做的例子sd:

sd <- 10
n1 <- data.frame(draw = rnorm(1000, 0,sd))
final1 <- sample(n$draw[!with(n, draw > 50 | draw < -50)],100)
sd <- 50
n2 <- data.frame(draw = rnorm(1000, 0,sd))
final2 <- sample(n$draw[!with(n, draw > 50 | draw < -50)],100)

par(mfrow = c(1,2))
hist(final1,main = "sd = 10")
hist(final2,main = "sd = 50")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 或者您只想采用平坦分布对此范围内的值进行采样.在这种情况下,只是sample(-50:50,100,replace = T)