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

Как выбрать элемент массива в зависимости от рейтинга?

Дамы и господа, помогите решить одну проблему.
Предположим у меня есть массив с данными. Циферки - это их вес, в процентах.:
иван => 60
максим => 20
вова => 20


И возникла задача выбрать случайный элемент в зависимости от её веса. Например шанс, что будет выбран элемент "иван" больше, чем другие. Поскольку он имеет больше вес.
Подскажите как быть?..
  • Вопрос задан
  • 156 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Второй вариант – то, что надо. Остаётся получить случайное от 0 до 4 (с равномерным распределением) и взять соотв. имя. У Ивана шансов как раз 3/5.

Upd.
function getRandomWinner($ppl)
{
  $choice = rand(0, array_sum(array_values($ppl)) - 1);

  $sum = 0;
  foreach($ppl as $name => $rank) {
    $sum += $rank;
    if ($choice < $sum) return $name;
  }
}

$winnerName = getRandomWinner([
  'Иван' => 60,
  'Максим' => 20,
  'Вова' => 20,
]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽