Задать вопрос
@xaiponews

Random как сгенерировать случайные числа но с определенной вероятностью выпадения?

как сгенерировать случайные числа но с определенной вероятностью. Например числа от 1 до 5, но 1 должна выпадать с вероятностью 35%, 2-25%, 3-25%, 4-10%, 5-5%
  • Вопрос задан
  • 7004 просмотра
Подписаться 2 Простой 8 комментариев
Решения вопроса 2
@dmshar
Эта элементарная задача называется "генерирование дискретных случайных величин с заданным законом распределения". Решается классическим образом.
Сначала разбиваем наш диапазон от 1 до 100 на следующие интервалы:
1-35,36-60,61-85,86-95,96-100.
Затем генерируем число, равномерно распределенное в диапазоне от 1 до 100. Номер интервала, в который это число попадает дает ваши генерируемые цифры - от 1 до 5, причем распределены они в точности по вашей таблице распределения.
Ответ написан
Stalker_RED
@Stalker_RED
dmshar все правильно вам написал, разбивайте число из диапазон 1..100 на интервалы

function foo() {
  let random = Math.floor(Math.random() * 100) + 1; // 1..100
  switch (true) {
    case random < 36: return 1 // 35%
    case random < 61: return 2 // 25%
    case random < 86: return 3 // 25%
    case random < 96: return 4 // 10%
    default: return 5
  }
}


Тест: запустим 10 млн раз и посмотрим распределение
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы