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

Есть массив значений с указаниями шансов выпадения:
$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 - это сама вероятность выпадения значения
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если для шанса 1 и более % вы используете рандом от 1 до 100, то для шанса меньше 1% - число "100" умножаете на 10 (для 0.2) или 100 (для 0.01)

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект