php ajax 概率 转盘,php+jquery实现转盘抽奖 概率可任意调

本文介绍如何使用PHP和jQuery实现一个简单的转盘抽奖功能,包括转盘转动和控制停止角度的实现,以及概率控制算法。利用jqueryrotate插件处理转盘转动,并通过概率数组动态调整奖项出现概率。
摘要由CSDN通过智能技术生成

8356708641b8b4aa9e0d530947f12dfe.png

转盘抽奖,炫丽的一般是flash做的。不懂flash而又不需要那么炫丽,可以简单的通过jquery来实现。网上教程有很多,跟着做了一下,也贴出来吧。要实现转盘抽奖,有两个关键点,一是让转盘或指针转起来并控制停止角度,一是概率控制。

对于转起来控制停止角度这个问题,网上各教程都是用的jqueryrotate这个jquery插件,兼容性好使用也简单,要我本人自己写也不知道怎么写好,还是拿来即可。对于概率控制,网上也一致的是这个经典算法:

function getRand($proArr) {

$result = '';

//概率数组的总概率精度

$proSum = array_sum($proArr);

//概率数组循环

foreach ($proArr as $key => $proCur) {

$randNum = mt_rand(1, $proSum);

if ($randNum <= $proCur) {

$result = $key;

break;

} else {

$proSum -= $proCur;

}

}

unset ($proArr);

return $result;

}

这里参数是一个概率数组,某一项的出现的概率是其概率精度/总概率精度。比如概率数组是array(‘1’=>’40’,’2’=>’60’),那么‘1’这一项出现的概率就是40/(40+60)。为什么是这个结果呢,好吧,简单的概率计算:

d1b692358576c84b67289e31d78703c6.png

php经典概率算法解析

(原谅我为了输这分数,还去百度了一下,囧…)

对于概率数组的来源,实际应用中应该是从数据库里面取,这样方便做各种业务判断,比如某一奖项的概率除了人工干预还根据抽中次数自动变化。我这里为了显示,就写到一个数组里面,而且这找的转盘素材同一奖项还有多处出现,故用这样一个数组来存储(这里根据实际业务而定,不是重点)。

//奖项数据

$prize_arr=array(

'youpan'=>array('angle'=>array('16-40','196-220'),'prize'=>'U盘1个','v'=>10),

'money_2000'=>array('angle'=>array('46-74',&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值