Как рассчитать выпадение значений с заданным шансом?

Есть массив значений с указаниями шансов выпадения:
$arr = [
    'val1' =>[
        'qty' => 10,
        'chance' => 0.2,
    ],
    'val2' =>[
        'qty' => 5,
        'chance' => 1,
    ],
    'val3' =>[
        'qty' => 3,
        'chance' => 0.01
    ],
    'val4' =>[
        'qty' => 100,
        'chance' => 10
    ],
];


Рассчитать для целых чисел у меня получилось. Делал методом заполнения массива и определения выпадения по совпадению рандома от 0 до count($arrResult)-1. А вот как быть с дробными значения шанса? Нельзя же в массив поместить 0.2 элемента. Так же должны выпадать пустые значения.

P.S. qty - количество элементов, которые могут выпасть в течение сессии, например. chance - это сама вероятность выпадения значения
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если для шанса 1 и более % вы используете рандом от 1 до 100, то для шанса меньше 1% - число "100" умножаете на 10 (для 0.2) или 100 (для 0.01)

Например для 0.01 используете тот же рандом, просто умножаете 100*100
И рандом будет mt_rand(0, 10000) и соотв-но одно совпадение из десяти тысяч как-раз даст вам шанс 0.01
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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