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

Как сделать рандом с шансом?

Допустим есть массив
$arr = ['test' => 50, 'tost' => 10, 'tost1' => 40];

Нужна функция рандома с регулированием шансов, test выпадает с шансом 50%, tost - 10%, tost1 - 40%
  • Вопрос задан
  • 640 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function chance($arr) {
  $total = array_sum($arr);
  $rand = rand(1, $total);
  foreach($arr as $key => $prob) {
    $rand -= $prob;
    if ($rand <= 0) {
      return $key;
    }
  }
}

print chance(array('test' => 50, 'tost' => 10, 'tost1' => 40));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
$arr = ['test' => 50, 'tost' => 10, 'tost1' => 40]; // сумма должна быть 100
sort($arr);
$n = rand(0, 100); // ну или тут использовать array_sum($arr)
$sum = 0;
foreach ($arr as $i => $r) {
    $sum += $r;
    if ($sum >= $n) {
        echo $i;
        break;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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