我目前正在为我维护的网站编写积分系统,我希望每天为用户奖励一个随机点数。
这就是我的想法
[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 :(得分:3)
首先生成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]);