Если в любой момент у вас есть больше (действительных) купонов, чем осталось от вашей 100 целей, у вас есть (небольшой) риск получения слишком большого количества погашений, и наилучший алгоритм зависит от того, какой риск вы можете терпеть,и каково наблюдаемое распределение по процентам выкупа в любой данный час дня.Если вы не можете мириться с каким-либо риском, то вы просто всегда выставляете столько купонов, сколько у вас осталось от цели, и это все, т.е.функция вероятности P (t), которая дает вероятность того, что купон, выпущенный в момент времени t, будет погашен.Затем вы можете действовать следующим образом:
redeemed = 0
expected_redemptions = 0
whenever new customer arrives:
if (redeemed + expected_redemptions < 100)
float coupon to customer
expected_redemptions = expected_redemptions + P(now())
whenever a coupon floated originally at time 't' is redeemed:
redeemed = redeemed + 1
expected_redemptions = expected_redemptions - P(t)
whenever a coupon floated originally at time 't' expires:
expected_redemptions = expected_redemptions - P(t)
Этот алгоритм отправляет купоны покупателям, пока ожидаемое количество погашений не превышает 100. Фактическое число все еще может превышать 100 из-за статистической дисперсии.У вас будет больше информации о степени погашения в данный момент, чем единичная вероятность оценить, чтобы иметь возможность лучше оценить риск.Также необходимо разработать модель риска.