时间:2021-07-01 10:21:17 帮助过:20人阅读
这就涉及到了一个类似权重计算的一个算法了。通过一个简单的权重计算办法将这件事情搞定了,概率还是在预计范围之内的。
下面就将这个权重计算的方法概述下。
首先说明的是这个例子在这里仅适合二维数组且一维为数字索引的数组,数据数组结构如下:
$data=array(
0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),
1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),
2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),
3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60'));
下面是简单计算权重的算法
// 权重数值越高,被返回的概率越大
// author www.scutephp.com
function countWeight($data){
$weight=0;
foreach($data as $v){
$weight+=$v['weight'];
}$int=mt_rand(1,$weight);//获取一个随机数
$weight = 0;
foreach($data as $v){
$weight+=$v['weight'];
if($int <= $weight) return $v;
}}
计算结果返回如下:Array
(