Например, Я хочу случайным образом выровнять 0, 1 (50% соответственно) 10 раз. Значит, должно быть пять «0» и пять «1».
Но когда я использовал:
rbinom(10,1,0.5)
иногда он генерирует четыре «0» и шесть «1».
Я заметил, что функция sample()
также имеет эту проблему.
Должно быть пять «0» и пять «1», и порядок должен быть случайным.
Вам нужно использовать sample()
, но вот так:
b <- c(rep(0, 5), rep(1, 5))
sample(b)
# [1] 1 0 1 1 0 0 1 0 0 1
sample(b)
# [1] 0 1 1 1 0 1 0 0 0 1
sample(b)
# [1] 0 0 0 1 1 1 0 1 0 1
sample(b)
# [1] 0 1 0 0 1 0 1 1 0 1
sample
случайным образом перетасует вектор. Так что sample(rep(c(0,1),5))
это то, что вам нужно.
Ярлык будет:
sample(10) %/% 6
#> [1] 0 0 0 1 1 0 0 1 1 1
Мы можем использовать bitwAnd
+ sample
bitwAnd(sample(10), 1)
То, что вы просите, - это перестановка, а не биномиальное распределение.