2024-12-05 11:12:57
大家好,今天小编关注到一个比较有意思的话题,就是关于php抽奖概率算法的问题,于是小编就整理了3个相关介绍php抽奖概率算法的解答,让我们一起看看吧。
给你一个概率计算上述代码是一段经典的概率算法,$proArr是一个预先设置的数组,假设数组为:array(100,200,300,400),开始是从1,1000这个概率范围内筛选第一个数是否在他的出现概率范围之内, 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间,在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。这样筛选到最终,总会有一个数满足要求。就相当于去一个箱子里摸东西,第一个不是,第二个不是,第三个还不是,那最后一个一定是。这个算法简单,而且效率非常高。最后输出JSON给前端
正常情况下是没有问题的,
但是有人用恶意脚本进行刷奖,也就是同一个人发起大量请求,1秒可能一两百的请求甚至更多,而且不只一个人刷奖。
问题出在1这一步
举个例子,假设每人只能抽一次奖,因为请求太快,同一人的a,b两个请求几乎同时来,a走完抽奖逻辑了,并且在抽奖表中插入记录的过程时,因为mysql的性能的问题,b去走1这一步是读不到表中的记录的,因为a的插入根本没有完成。所以b请求会再走一次抽奖逻辑。造成同一人抽奖两次,然后再插入抽奖表。
我关心的是能否a插入抽奖表的瞬间,b就能判断出抽奖表有数据。
所以我觉得问题是mysql写入的不够快,读取的不够快,所以我要采用redis做一层快速缓存。
我们做的抽奖是单一奖品百分之百中奖,只限制奖品数量,所以必须保证每人只能抽一次,而且尽量在程序层面去解决。
具体数据一直在变化的,授人以鱼不如授人以渔,
告诉你现在知道的,不如告诉你去哪里查询。
国内所有田协认证的比赛都会在“中国马拉松”网上登记,
具体网址
http://www.runchina.org.cn/portal.php?mod=calendar&ac=list
当然也存在不是田协认证的赛事,自然上面不会有,
那些小的赛事,即便跑个好成绩也没有人承认,
特别是有的比赛报名需要田协认证比赛的成绩的。
比如绍兴马拉松,你跑进业余一级就可以免抽签。
无锡马拉松,你跑进指定的标准也可以直通。
这些都要求你参加的赛事是,田协认证的A1赛事。
我有个朋友去年跑了“大鹏新年马拉松”,PB很多,可惜田协没有认证。
前车之鉴哦
如果参加小比赛的话,
报名前去“中国马拉松”网上去看看哦
去田协官网查,几个主要的说一下,时间不分先后
北马,衡水湖,石家庄,天津,唐山,秦皇岛,东营,无锡,大连,上海,郑开,郑州,太原,邯郸,武汉,厦门,珠海,广州,重庆,兰州,青岛,烟台,西安,杭州,绍兴,南京,苏州,南宁,昆明,南昌,长沙,成都,哈尔滨,沈阳等等,还有很多
每年,全国的马拉松赛事还是很多的,包括在田协注册的和没注册的,超过800场。上半年的基本都举办完了就不说了。下半年的大一点的赛事主要有这些:
6月份兰州,贵阳,六盘水,8月份哈尔滨,9月份北京,太原,10月份西安,长沙,成都,石家庄,11月份济南(第一次办),南昌,东莞,上海,合肥,南京,杭州,郑州,12月份福州,南宁,广州,广州黄埔(抽奖送车),深圳,澳门,深圳宝安。。。希望可以帮到你。
到此,以上就是小编对于php抽奖概率算法的问题就介绍到这了,希望介绍关于php抽奖概率算法的3点解答对大家有用。
Copyright © 2005-2024 代潇瑞博客 www.daixiaorui.com All Rights Reserved.
免责声明: 1、本站部分内容系互联网收集或编辑转载,并不代表本网赞同其观点和对其真实性负责。 2、本页面内容里面包含的图片、视频、音频等文件均为外部引用,本站一律不提供存储。 3、如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除或断开链接! 4、本站如遇以版权恶意诈骗,我们必奉陪到底,抵制恶意行为。 ※ 有关作品版权事宜请联系客服邮箱:478923*qq.com(*换成@)
渝ICP备2023009091号-21