一、关于介面
1、原生JS之实现九宫格抽奖效果,从此百分之百中奖不是梦!!!
了解如何加速、减速,停到中奖位置
2、积分转盘抽奖算法设计解析
2.1、可参其中的”等概率抽奖具体案例“设计页面
2.2、“随机抽奖概率算法设计”解释了“”经典算法”的原理;
2.3、利用公式:Sn=(A1+A2+…+Am)/m*n-n*a 控制积分增或减(注:公式是评论修正的);
2.4、算法放在服务端而不是在前端,更利于防止超中(个人想法:前端点抽奖->服务端计算中奖并锁定->返回奖项给前端->前端显示所中项目->通知服务端进行解锁);
二、算法
1、跪求一个java抽奖中奖算法的实现,在线等,急。。。。
思路:
我给你说个思想,你把每个奖项都设置一个值,举个例子:设置五等奖:500名,那你就设置数据区域1——500都是五等奖,四等奖:300名,那你就设置数据区域501-800都是四等奖,以此类推。这样每个ID过来抽奖的时候他每点击一次抽奖就产生一个随机整数,系统再和设置的中奖数据区域相匹配。基本上就可以解决你说的问题了。
2、不同中奖概率的多奖包抽奖几种算法
3、一个经典概率算法(用于抽奖等场景) (就是上面2提及的”经典算法“)
4、抽奖算法-指定概率的随机
大概原理:
前提是确定了抽奖的人数(次数),为每个人准备一个盒子(数组元素),并随机将奖品放入到每个盒子中,按顺送出盒子,这样可以控制大奖出现的位置;
5、一个简单抽奖算法的实现以及如何预防超中
5.1 中奖概率 = 奖品数量 / (奖品数量 + 无奖数量),中奖百分率;
5.2 出奖机率 = (奖品数量 + 无奖数量) / 奖品数量 , 即抽多少次会中奖1次;
5.3 无奖数量 = 奖品数量 / 中奖概率 - 奖品数量, 由5.1反推计得;(先定好中奖概率,计算出该投入多少个无奖数量)
累计每项出奖数防止超中
三、Math.random()使用
1、Math.random()使用-抽奖概率事件
试验2000000次,均匀得无可挑剔:
重复几次试验,可以总结出均匀获得两个数字之间的随机数的公式:
1.1、Math.floor()方法
function randomNum(max,min){
return Math.floor(Math.random()*(max-min+1)+min)
}
1.2、Math.round()方法
function randomNum(max,min){
return Math.round(Math.random()*(max-min+1)+min-0.5)
}
1.3、Math.ceil()方法
function randomNum(max,min){
return Math.ceil(Math.random()*(max-min+1)+min-1)
}