>  기사  >  백엔드 개발  >  php简单抽奖类的应用代码分享

php简单抽奖类的应用代码分享

WBOY
WBOY원래의
2016-06-20 13:05:031022검색

项目需求php做一个抽奖类的应用,用户点击抽奖,会返回三种不同的结果(即奖项:一等奖,二等奖,三等奖,谢谢抽奖),很显然,这个奖值出现的概率要依次降低了。

这就涉及到了一个类似权重计算的一个算法了。通过一个简单的权重计算办法将这件事情搞定了,概率还是在预计范围之内的。

下面就将这个权重计算的方法概述下。

首先说明的是这个例子在这里仅适合二维数组且一维为数字索引的数组,数据数组结构如下:

<p>$data=array(</p>	0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),<br />	1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),<br />	2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),<br />	3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60')<br /><p>);</p>

下面是简单计算权重的算法

<p>// 权重数值越高,被返回的概率越大</p>// author www.scutephp.com<br />function countWeight($data){<br />	$weight=0;<br />	foreach($data as $v){<br />		$weight+=$v['weight'];<br />	}<br /><p>	$int=mt_rand(1,$weight);//获取一个随机数</p><p>$weight = 0;<br /></p><p>foreach($data as $v){<br />$weight+=$v['weight'];<br />if($int <= $weight) return $v;<br />}</p><p>}</p>

计算结果返回如下:Array

(
    [id] => 4
    [name] => 谢谢抽奖
    [weight] => 60
)


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.