Heim > Backend-Entwicklung > PHP-Tutorial > php简单抽奖类的应用代码分享

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

WBOY
Freigeben: 2016-06-20 13:05:03
Original
1030 Leute haben es durchsucht

项目需求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>
Nach dem Login kopieren

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

<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>
Nach dem Login kopieren

计算结果返回如下:Array

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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage