Уточнения:нужно N событий псевдослучайно распределить по времени так, чтобы в «ячейку» одного дня не попадало больше, чем K событий. При этом запрос с параметрами приходит разово, и нужно сразу ответить выигрышный он или нет.
Решение: динамически считать вероятность выигрыша, в зависимости от
текущей даты,
числа выигрышей в этот день и остатков:
призов и
дней до окончания.
Вероятность, в итоге может быть нулевой (если достаточно выигрышей в этот день), 100%, если остаток призов велик, а дней недостаточен, и где-то между 0 и 100% в остальных случаях. Формулу составьте сами.
Для вероятности
$prob
от 0 до 100% выигрыш определять примерно так:
$win = rand(1, 100) <= $prob;
if( $win) { // вы выиграли! }
Старый ответ:
Действительно случайное распределение не исключает попадания в т.ч. и 10 розыгрышей на 1 день. Но т.к. ваша аудитория не искушена в теории вероятностей, просто воспользуйтесь N раз сервисом random.org:
- если
N < числа дней
выберите N дней из диапазона;
- в эти дни разыгрывайте по 1 призу – на том же change.org с прямой видеотрансляцией процесса.