Ответ 1
Используйте пакет StatsBase.jl
, т.е.
Pkg.add("StatsBase") # Only do this once, obviously
using StatsBase
items = ["a", 2, 5, "h", "hello", 3]
weights = [0.1, 0.1, 0.2, 0.2, 0.1, 0.3]
sample(items, Weights(weights))
Или, если вы хотите попробовать много:
# With replacement
my_samps = sample(items, Weights(weights), 10)
# Without replacement
my_samps = sample(items, Weights(weights), 2, replace=false)
(В Юлии <1.0, Weights
назывался WeightVec
).
Вы можете узнать больше о Weights
и почему они существуют в документах. Алгоритмы выборки в StatsBase
очень эффективны и разработаны для использования различных подходов в зависимости от размера входных данных.