最近因项目需求需要做一个抽奖类的应用,用户点击抽奖,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖),很显然,这个奖值出现的概率要依次降低了。这就涉及到了一个类似权重计算的一个算法了。根据需求想了很久,也总算是通过一个简单的权重计算办法将这件事情搞定了,概率还是在预计范围之内的。
下面就将这个权重计算的方法概述下。
首先说明的是这个例子在这里仅适合二维数组且一维为数字索引的数组,数据数组结构如下:
$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.Alixixi.com function countWeight($data){ $weight=0; $temp=array(); foreach($data as $v){ $weight+=$v['weight']; for($i=0;$i<$v['weight'];$i++){ $temp[]=$v;//放大数组 } } $int=mt_rand(0,$weight-1);//获取一个随机数 $result=$temp[$int]; return $result; }
计算结果返回如下:
Array
(
[id] => 4
[name] => 谢谢抽奖
[weight] => 60
)
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 谢谢!
, 谢谢
, 谢谢了
, array
, 权重
, 概率
, name
, weight
, 谢谢。数据库
, php抽奖
, php抽奖刮刮卡
php翻牌抽奖
权重的简单计算方法、抽奖权重、抽奖 程序 权重、java权重抽奖、权重计算公式,以便于您获取更多的相关知识。