比较常见的方面是把随机数生成为一个数组. 不过随机数比较多的情况下产生的数组也会特别大.
下面是另一种算法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$array = array(1 => 30, 2 => 20, 3 => 20, 4 => 15, 5=> 10 , 6 => 5); $rand = mt_rand(); $rand = $rand % 101; $max = 0; $v = 0; foreach($array as $key => $value) { $max += $value; if($rand <= $max) { $v = $key; break; } } echo $v;