关于系统架构,项目设计案例(一):抽奖系统概率设计
上面一篇文章说的只是一些想法,我想很多人看到了比较空洞,从这篇文章开始我会把我设计过的一些项目拿出来把我的设计的相关思路给大家作为一些参考。
其实抽奖系统的设计,我在前面的文章有说明,今天又来回顾一下吧。
首先我们看需求:我们想弄一个抽奖系统,在抽奖的时候我们希望针对不同的奖品有可以设置不同的中奖概率,还有就是我们不想一个时间马上就把所有的奖品就发送出去了,最好能是在每几名中产生一名。同时要兼顾后面的,不要前面的人把奖品全部抽走了后面就没有奖品了。最后能有一点后台,这样方便我们做活动的时候能更好的把奖品进行回收。
看到这个需求的时候,我感觉脑袋比较大。看起来比较简单,其实包含的信息并不简单。这个还是我做了整理以后的说法,刚开始的说法完全让人迷迷糊糊。
做一个系统,做好的方式就是先去参考别人的东西,这样能让你的设计更加快捷,也能让你有一个更加成熟的概念来进行相关的设计。所以在这个项目中,我们首先就对各种抽奖系统进行了了解。呵呵,其实最早给我概念的时候,我想起了我的高中数学老师(刘老师),我们私下喜欢叫他老刘,60多岁的一个老头。我想起了他教给我们的概率。感谢刘老师。
很经典的例子:摸乒乓球。
盒子里面有9个白球,1个黑球。
问一:如果每次把球摸出来以后再把球放回去,问每次摸到黑球的概率是多少?
问二:如果每次不把摸出的球放回去,那每次摸到第二次摸到黑球的概率是多少?
这个是最简单的抽奖概率方面的东西了,也是最公平的。但是离我们的需求远远达不到。
不能进行奖品数量的可控制性,更不要说暗箱操作了。
然后公司市场部的,黎同学建议偶去看一些市场上的抽奖系统。我第一个感受的就是福彩。每个人买自己想要的号码,然后定时公布就好了。这个方式确实够好,能满足不少的需求。方便后台进行暗箱操作,同时可以按照每段时间来进行抽奖就可以了。但是最大的一个问题在于,他不是及时抽奖。
然后我有看到另一种方式,就是刮刮奖的这种。每个人买个卡片,刮开就能知道自己是否中奖了,把卡片和中奖号码绑定起来就可以了。于是在这个时候我想到了,如果把抽奖的次数和奖品进行绑定,就可以分段抽奖,同时也能保证奖品的数量发送,分段进行不同的设置不就可以进行每几个产生一名了吗?
于是根据上面的想法,得到了这个
抽奖系统数据库设计