微信大转盘实现 逻辑
2019独角兽企业重金招聘Python工程师标准>>>
<?php
/* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。 * 这样 筛选到最终,总会有一个数满足要求。 * 就相当于去一个箱子里摸东西, * 第一个不是,第二个不是,第三个还不是,那最后一个一定是。 * 这个算法简单,而且效率非常 高, * 关键是这个算法已在我们以前的项目中有应用,尤其是大数据量的项目中效率非常棒。 */
function get_rand($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;
} /* * 奖项数组 * 是一个二维数组,记录了所有本次抽奖的奖项信息, * 其中id表示中奖等级,prize表示奖品,v表示中奖概率。 * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0, * 数组中v的总和(基数),基数越大越能体现概率的准确性。 * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%, * 如果v的总和是10000,那中奖概率就是万分之一了。 * */
$prize_arr = array( '0' => array('id'=>1,'prize'=>'平板电脑','v'=>1), '1' => array('id'=>2,'prize'=>'数码相机','v'=>5), '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10), '3' => array('id'=>4,'prize'=>'4G优盘','v'=>12), '4' => array('id'=>5,'prize'=>'10Q币','v'=>22), '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
); /* * 每次前端页面的请求,PHP循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 * 将中奖奖品保存在数组$res['yes']中, * 而剩下的未中奖的信息保存在$res['no']中, * 最后输出json个数数据给前端页面。 */
foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v'];
}
$rid = get_rand($arr); //根据概率获取奖项id $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项
unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){ $pr[] = $prize_arr[$i]['prize'];
}
$res['no'] = $pr;
print_r($res);
?>
转载于:https://my.oschina.net/u/2299514/blog/546543
微信大转盘实现 逻辑相关推荐
- PHP jQuery微信大转盘抽奖源代码分享
微信大转盘抽奖-jQuery+PHP实现,发现很多转盘抽奖,都实现了前台部分,大部分都使用了HTML5技术,但是后台自己调整抽奖几率不方便,索性自己收集资料,在一个转盘抽奖的基础上,增加了PHP部分代 ...
- asp大转盘抽奖程序代码微信大转盘asp版源码
昨天接到一个客户需求让帮忙找个asp的微信大转盘代码,我找遍全网也没找到有asp做的微信大转盘,网上基本上全是php做的大转盘,没办法受客户所托,昨晚给写了一个asp大转盘代码程序,后台设置奖项,每天 ...
- Canvas实现微信大转盘抽奖代码
Canvas实现微信大转盘抽奖代码,canvas结合jquery实现的一款大转盘抽奖代码,奖品图片均由canvas绘制,可自定义奖项. jquery抽奖微信大转盘jquery抽奖转盘微信抽奖源代码微信 ...
- jQuery+PHP实现微信大转盘抽奖 v1.0
微信大转盘抽奖-jQuery+PHP实现,发现很多转盘抽奖,都实现了前台部分,大部分都使用了HTML5技术,但是后台自己调整抽奖几率不方便,索性自己收集资料,在一个转盘抽奖的基础上,增加了PHP部分代 ...
- .net实现微信大转盘
本人参考网上一个php微信大转盘案例修改了一个.net版本的微信大转盘. 原php微信大转盘教程网址: 幸运大转盘-Jquery_PHP实现的抽奖程序(上)http://www.helloweba.c ...
- html5微信预约挂号源码,微信大转盘html5代码
[实例简介] 微信大转盘html5代码 [实例截图] [核心代码] $(function(){window.requestAnimFrame=(function(){return window.req ...
- 产品经理的金字塔之旅---抽奖大转盘产品逻辑
抽奖大转盘产品逻辑 作为一个好的活动推广,抽奖大转盘这一活动往往是必不可少的.但是之前作为一个用户角度单纯的只是希望自己可以中奖,根本不会从产品的角度去思考这一产品逻辑,现作为一名产品经理才明白并不是 ...
- 微信大转盘 【案例源码】提供
现在很多网站都有抽奖活动,今天写下转盘抽奖,抽奖插件的手记,希望对您有用. 参与了微一热的活动大转盘开发,具体效果可以看官网演示:http://www.weiyr.com/dzp/info 以下为案例 ...
- 微信大转盘 java_[Java教程]使用CSS3+jquery.js 实现微信抽奖转盘效果
[Java教程]使用CSS3+jquery.js 实现微信抽奖转盘效果 0 2014-03-19 02:00:24 上次发表了一篇 微信抽奖转盘活动-效果源码分析 最近想起了刚接到这个项目时第一时间脑 ...
最新文章
- 你拿什么保护我的版权(写在中移动MM商用之前)
- zoj-What day is that day?
- 来自开发者的点赞 · 网易云信揽获三大技术奖项
- python os.urandom 安全_python SystemRandom/os.urandom总是有足够的熵来获得良好的加密
- 【原创】linux 下远程连接windows桌面
- 2数据库表增加一个字段_14个实用的数据库设计技巧!
- pandas分组计算平均值_pandas索引,分组计算
- POST 一张 图像的调试来认识 http post
- Feign 重试解析
- 个人博客网站搭建详细视频教程和源码
- 软件测试的六大测试质量标准
- 解决一例:“无法删除文件,无法读源文件或磁盘”
- c#的特性(Attribute、Obsolete、Conditional)
- 象棋软件新霸主诞生,旋风绝杀名手,再次夺冠,一统江湖了
- 前端不让浏览器自动填充账号密码
- python和c语言哪个更难学深_c语言和python先学哪个比较简单
- ez-wifibroadcast 学习1
- 细述个人建站那点心酸往事
- 江苏财经职业技术学校计算机专业怎么样,江苏财会职业学院好不好?排名怎么样评价如何...
- 数理统计学(Mathematic Statistics)的基本概念
热门文章
- 微商引流的核心是什么?微商引流的三大核心关键,让加人不再是难题
- python爬知网全文期刊数据库_Python爬虫根据关键词爬取知网论文摘要并保存到数据库中【入门必学】...
- 关于智慧食堂现场刷卡设备替换方案的研究
- my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf‘ is ignored.
- 在线测试识别电机参数
- android蓝光原盘播放软件,安卓系统真的拥有完美的蓝光原盘菜单导航吗?我来测试下...
- 知识产权(零)——专利检索概论
- 荧光标记氨基酸:荧光标记DL-天门冬氨酸,荧光标记甘氨酸-DL-天冬氨酸,DL aspartic acid labeled
- 帕拉迪统一安全管理与综合审计系统解决方案
- Python表白代码合集,让你过年前找到对象