2012-02-13 32 views
2

我目前正在为我维护的网站编制一个积分系统的过程,并且我希望每天给予我的用户随机数量的积分。生成一个随机数,偏差结果为PHP

这是我在想什么

[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

寻找同样的事情:d现在我做的阵列为每个部门和一个兰特选择一个部门再进行第二次选择所选择的划分 – 2012-02-13 01:23:21

+1

内的号码,但我不明白你的百分比:S,总和应该是100%否? – 2012-02-13 01:24:12

+0

这就是我想要的,百分比肯定会改变,但是它像货币体系一样,我不希望它很容易从115-200个积分中很容易地获得,id就像它是罕见的发生! – 2012-02-13 01:26:46

回答

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]); 
+0

这正是我正在寻找的,非常感谢你,我真的很感激! – 2012-02-13 01:42:51

+0

和我的建议:) – 2012-02-13 02:03:45