做一个抽奖功能,假设有10种奖品,每样的抽中概率都是10%。
代码如下:
<?php
/**
* php抽奖程序
* edit www.jb200.com
*/
function _xRand($arr) {
$r=rand(1, 100);
$k=0;
foreach ($arr as $v) {
$k+=$v[1];
if ($r<=$k) {
return $v[0];
}
}
}
$arr=array(
array('1-10',10),
array('11-20',10),
array('21-30',10),
array('31-40',10),
array('41-50',10),
array('51-60',10),
array('61-70',10),
array('71-80',10),
array('81-90',10),
array('91-100',10),
);
_xRand($arr);
?>
实现思路:
1.首先从1-100中随机一个数
2.计算随机数出现在那个阶段
3.返回中奖
注:
如果总几率超过100%,超过部分无效。
例如:
$arr=array(
array('a',50),
array('b',30),
array('c',20),
array('d',10),
);
$arr2=array(
array('a',50),
array('b',40),
array('c',20),
);
$arr永远不会返回{d},$arr2{c}其实只有10%的几率会返回。
您可能感兴趣的文章:
php 权重计算方法(抽奖)