PHP вероятность выпадения числа

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Random с вероятностью события

#1 3 февраля 2019 в 06:15
Привет, всем!

Пытаюсь сделать выпадение числа из массива с определенной вероятностью.

Есть массив:
  1. $arr = array(
  2. 0 => 10,
  3. 1 => 20,
  4. 2 => 70
  5. );
Соответственно чем больше значение, тем чаще нужно показывать ключ.
Делается это для примера с показами баннеров, чем дороже цена баннера, тем чаще он показывается, но не стоит забывать что цена может быть у всех одинаковая!

Нахожу процентное соотношение каждого числа от общей суммы и сравниваю со случайным числом
  1. $sum = array_sum($arr);
  2. $random = rand(0,100)/100;
  3. foreach ($arr as $key => $value) {
  4. $value = $value/$sum;
  5. if($random <= $value) {
  6. echo $key;
  7. }
  8. }
Но что-то не так, тем более когда например все значения одинаковые!
Прошу помочь\подсказать\сделать, соответственно не бесплатно!!!
#3 3 февраля 2019 в 11:07

Пытаюсь сделать выпадение числа из массива с определенной вероятностью.

Вадим Нарочный
#4 3 февраля 2019 в 12:13

с определенной вероятностью.

Вадим Нарочный
Просто добавить в массив одинаковых значений, вероятность выпадения которых должна быть больше.
Например четыре раза 70, три раза 40, два раза 20 и т.д.
#5 3 февраля 2019 в 12:15

Просто добавить в массив одинаковых значений, вероятность выпадения которых должна быть больше.
Например четыре раза 70, три раза 40, два раза 20 и т.д.

Ris
Есть два баннера, один стоит 50 копеек, второй 90, тот что дороже нужно показывать чаще!

Оказывается решение было добавить break!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.