html5中文学习网

您的位置: 首页 > 网络编程 > PHP编程 » 正文

php 简单计算权重的方法(适合抽奖类的应用)-php程序员的笔记_PHP教程_编程技术

[ ] 已经帮助:人解决问题

最近因项目需求需要做一个抽奖类的应用,用户点击抽奖,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖),很显然,这个奖值出现的概率要依次降低了。这就涉及到了一个类似权重计算的一个算法了。根据需求想了很久,也总算是通过一个简单的权重计算办法将这件事情搞定了,概率还是在预计范围之内的。9fWHTML5中文学习网 - HTML5先行者学习网

下面就将这个权重计算的方法概述下。9fWHTML5中文学习网 - HTML5先行者学习网

首先说明的是这个例子在这里仅适合二维数组且一维为数字索引的数组,数据数组结构如下:9fWHTML5中文学习网 - HTML5先行者学习网

$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'));

下面是简单计算权重的算法9fWHTML5中文学习网 - HTML5先行者学习网

// 权重数值越高,被返回的概率越大// author www.Alixixi.comfunction 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;}

计算结果返回如下:9fWHTML5中文学习网 - HTML5先行者学习网

Array
(
    [id] => 4
    [name] => 谢谢抽奖
    [weight] => 60
)
9fWHTML5中文学习网 - HTML5先行者学习网

9fWHTML5中文学习网 - HTML5先行者学习网
9fWHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助