У меня есть сайт с промо и пользователями, пользователи могут зарегистрироваться в промо, тогда 1 случайный пользователь может выиграть в этой акции.
Теперь простая формула для выбора победителя:
$total_users = 100; //total users in promo
$winner_number = rand(1,$total_users);
НоТеперь пользователь может пригласить кого-либо с уникальной ссылкой на промо и клики по его ссылке увеличат счетчик приглашений для этой промо:
$users[] = ['user_id'=>8,'invites'=>5];
$users[] = ['user_id'=>17,'invites'=>150];
$users[] = ['user_id'=>69,'invites'=>30];
$users[] = ['user_id'=>32,'invites'=>0];
... //array with users in promo
И нужна новая формула для выбора победителя, зависит от приглашений (больше приглашений - больше шансов на победу), но без линейной прогрессии, чтобы выиграть шанс (избегать мошенничества)
Вес должен быть таким, как на этом графике: