R Генерация случайных чисел на основе условия - PullRequest
0 голосов
/ 31 января 2019

Я хотел бы создать последовательность из 100 чисел на основе следующих условий -

  • Числа варьируются от 1 до 5 и являются целыми числами.
  • Число1 и 2, сгенерированные как процент от общего числа, равны 90%

Моя попытка

Я попытался создать последовательность, используя runif.Однако я не уверен, как включить второе условие.

v=c(1,2,3,4,5)
rep(sample(v),100)

Ваша помощь по второму условию будет принята с благодарностью

1 Ответ

0 голосов
/ 31 января 2019

Как указано @markus, вы можете использовать для этого аргумент prob.Вот еще одна идея

v <- sample(c(sample(1:2, 90, replace = TRUE), sample(3:5, 10, replace = TRUE)))

Сначала сгенерируйте 90% (то есть здесь 90 элементов), состоящий из 1,2 и оставшиеся 10% (то есть 10) отдельно, а затем перемешайте результат.

И, очевидно,

length(which(v %in% 1:2)) / length(v)
# [1] 0.9

Редактировать

Здесь более общий случай

# size of final vector
n <- 100
# percentages
p1 <- 0.935
p2 <- 1 - p1
# calculate number of elements (using round)
n1 <- round(p1*n)
n2 <- n - n1
# get final vector
v <- sample(c(sample(1:2, n1, replace = TRUE), sample(3:5, n2, replace = TRUE)))

# Note:
length(which(v %in% 1:2)) / length(v)
# [1] 0.94

Обратите внимание, что у вас может быть точный процентнапример, установив n <- 100*10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...