В настоящее время я нахожусь в процессе кодирования системы баллов для веб-сайта, который я поддерживаю, и с этим я бы хотел ежедневно награждать своих пользователей случайным количеством пунктов.
Это то, что я думаю
[0-25] has a 75% chance [26 - 51] has a 13% chance [52 - 76] has a 6% chance [77 - 115] has a 4% chance [115 - 200 ] has a mere 2% chance
Таким образом, точечная скобка 0-25 имеет 75% вероятность генерации, поэтому, скорее всего, она будет создана.
Если у кого-нибудь есть идеи или предложения, было бы здорово их услышать.
Итак, в основном я хочу, чтобы случайное число сгенерировалось, 1-200, и я хочу, чтобы 0-25 имел гораздо более высокий шанс, что 115-200.
Сначала создайте случайное число между 0 и 99. Затем создайте второе случайное число в диапазоне, выбранном первым.
$ranges = Array( Array(0,25,75), // [0-25] on 75% chance Array(26,51,13), Array(52,76,6), Array(77,115,4), Array(115,200,2) ); $sel = rand(0,99); do { $pick = array_shift($ranges); $sel -= $pick[2]; } while($pick && $sel >= 0); $random = rand($pick[0],$pick[1]);