Обычно sample
используется для моделирования значений одной случайной величины. При работе, как в вашем случае, со случайным вектором (X, Y, Z) * 1002 * зависимых дискретных случайных величин, становится необходимым знать их совместное распределение. Бывает, что в вашем случае это очень просто, так как они «идеально» зависимы. Следуя идее @Rui Barradas, мы можем использовать
df[sample(nrow(df), n, replace = TRUE, prob = df$prob), -ncol(df)]
для генерации n
векторов. По закону больших чисел с увеличением n
вы будете становиться все ближе и ближе к желаемым 40%, 20% и 40%. Если вам нужны эти точные проценты с небольшим количеством розыгрышей, тогда ваш вопрос не о генерации.