抽奖算法需要满足的需求如下:
1.可以控制中奖的概率
2.具有随机性
3.最好可以控制奖品的数量
4.根据用户ID或者ip、手机号、QQ号等条件限制抽奖次数
初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面看一下整体的程序:
该程序是在ThinkPHP框架下完成的,使用了一些框架自带的类库和函数,下面我会逐一进行说明,控制器部分:
代码如下
/**
*
*
* @lanfengye
*/
class ChoujiangAction extends Action {
//抽奖的开始时间
var $begin_time="2012-12-25 14:00:00"; //开始时间 0-不限制
//抽奖的结束时间
var $stop_time="0"; //结束时间 0-不限制
//本次抽奖的奖项信息,必须按照从大到小的顺序进行填写,id为奖次,prize为中奖信息,v为中奖概率,num为奖品数量
//需要注意的是,该处也必须包含不中奖的信息,概率从小到大进行排序
var $prize_arr = array(
'0' => array('id' => 1, 'prize' => '44元购买1G/年空间', 'v' => 1,'num'=>1),
'