Ваш вопрос, как ни странно, задан, потому что кажется, что вы не до конца понимаете функцию rnorm
.
rnorm(100, -50,50)
создает выборку из 100 точек, заданную нормальным распределением с центром в -50, сстандартное отклонение 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")
- или вы просто хотите выбрать значения в этом диапазоне с плоским распределением.В этом случае просто
sample(-50:50,100,replace = T)