我目前正在为我维护的网站编写积分系统,因此我想每天奖励我的用户随机数量的积分。
这就是我的想法
[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]);
关于php - 在 PHP 中生成带有偏差结果的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254470/