php概率算法,php抽奖概率算法,php 中奖概率算法,php 抢红包 概率算法,php中奖概率 权重算法
2022-05-31PHP
最近,公司做大转盘中奖,用到了php中奖概率算法,这个算法可用于刮刮卡,大转盘等抽奖算法。用法很简单,代码里有详细注释说明,一看就懂,有需要的小伙伴参考下吧。
话不多说,先看前端页面效果
先完成后台PHP的流程,PHP的主要工作是负责配置奖项及对应的中奖概率,当前端页面点击翻动某个方块时会想后台PHP发送ajax请求,那么后台PHP根据配置的概率,通过概率算法给出中奖结果,同时将未中奖的奖项信息一并以JSON数据格式发送给前端页面
一、数据库设计
CREATE TABLE `ims_whm_probability` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `first_prize` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '一等奖概率', `second_prize` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '二等奖概率', `third_prize` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '三等奖概率', `fourth_prize` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '四等奖概率', `fifth_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '五等奖', `thanks` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '谢谢参与', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='大转盘 概率';
二、后台概率设置
三、php概率算法
// 代码亲测,概率与后台设置的概率相近 function getRand() { // 微擎查数据库方法 // 意思是查找第一条数据 $find = pdo_get('whm_probability',array('id'=>1)); $proArr = array( 'first_prize' => $find['first_prize'], 'second_prize' => $find['second_prize'], 'third_prize' => $find['third_prize'], 'fourth_prize' => $find['fourth_prize'], 'fifth_price' => $find['fifth_price'], 'thanks' => $find['thanks'], ); $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; }
很赞哦! ()