mt_rand($param_min,$param_max);
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
/**
* 计算几率
* proArr:数组 格式:array(1=>2,2=>4,3=>3,4=>1)
* $value_num : 所要计算的值总和
*/
public function get_rand($proArr,$value_num) {
$result = '';
//概率数组的总概率精度
$proSum = $value_num;
//概率数组循环 $key 格子 $procur 几率
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
注:经试验上面函数有的时候会存在随机不到物品的情况 可以将get_rand函数第二个参数去掉 函数里面的$proSum替换为
array_sum($proArr)即可;