结合数据库表设计抽奖游戏算法
抽奖是一个概率事件,数学不好的我只能通过比较笨的办法实现抽奖算法。
首先设置一个游戏表记录游戏数据
其次设置一个奖项表,生成各个奖项对应的随机数
用户点抽奖的时候,生成一个随机数,然后检索数据库是否存在这个随机数,存在就表示中奖了!不存在则表示每中奖!
思路类似于预先制作好抽奖球,每个球有一个编号及对应的奖品信息,然后跟一定量的无奖品信息的球一起打散到一个抽奖箱里,抽奖者随机从抽奖箱中取出一个球,然后根据是否有奖品信息判断是否中奖及中了什么奖!
然而
实际的抽奖箱随着抽奖球陆续被取走,剩下的奖项中奖概率逐步增高!
而这个程序算法则需要想办法动态调整奖项表中的随机数超出剩余奖项数量奖项的随机数!
生成奖项表时,越往后生成效率越低!
优化方案:
通过使用list<int> 生成一个序号列表,然后通过不断生成列表的随机index提取序号存入数据库,再将提取出来的序号从列表中去掉,可以大大提升效率!