关于系统架构,项目设计案例(一):抽奖系统概率设计

        上面一篇文章说的只是一些想法,我想很多人看到了比较空洞,从这篇文章开始我会把我设计过的一些项目拿出来把我的设计的相关思路给大家作为一些参考。

        其实抽奖系统的设计,我在前面的文章有说明,今天又来回顾一下吧。

        首先我们看需求:我们想弄一个抽奖系统,在抽奖的时候我们希望针对不同的奖品有可以设置不同的中奖概率,还有就是我们不想一个时间马上就把所有的奖品就发送出去了,最好能是在每几名中产生一名。同时要兼顾后面的,不要前面的人把奖品全部抽走了后面就没有奖品了。最后能有一点后台,这样方便我们做活动的时候能更好的把奖品进行回收。

        看到这个需求的时候,我感觉脑袋比较大。看起来比较简单,其实包含的信息并不简单。这个还是我做了整理以后的说法,刚开始的说法完全让人迷迷糊糊。

       做一个系统,做好的方式就是先去参考别人的东西,这样能让你的设计更加快捷,也能让你有一个更加成熟的概念来进行相关的设计。所以在这个项目中,我们首先就对各种抽奖系统进行了了解。呵呵,其实最早给我概念的时候,我想起了我的高中数学老师(刘老师),我们私下喜欢叫他老刘,60多岁的一个老头。我想起了他教给我们的概率。感谢刘老师。

        很经典的例子:摸乒乓球。

        盒子里面有9个白球,1个黑球。

       问一:如果每次把球摸出来以后再把球放回去,问每次摸到黑球的概率是多少?

       问二:如果每次不把摸出的球放回去,那每次摸到第二次摸到黑球的概率是多少?

       这个是最简单的抽奖概率方面的东西了,也是最公平的。但是离我们的需求远远达不到。

       不能进行奖品数量的可控制性,更不要说暗箱操作了。


       然后公司市场部的,黎同学建议偶去看一些市场上的抽奖系统。我第一个感受的就是福彩。每个人买自己想要的号码,然后定时公布就好了。这个方式确实够好,能满足不少的需求。方便后台进行暗箱操作,同时可以按照每段时间来进行抽奖就可以了。但是最大的一个问题在于,他不是及时抽奖。


      然后我有看到另一种方式,就是刮刮奖的这种。每个人买个卡片,刮开就能知道自己是否中奖了,把卡片和中奖号码绑定起来就可以了。于是在这个时候我想到了,如果把抽奖的次数和奖品进行绑定,就可以分段抽奖,同时也能保证奖品的数量发送,分段进行不同的设置不就可以进行每几个产生一名了吗?


      于是根据上面的想法,得到了这个 抽奖系统数据库设计  


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抽奖系统是由程序设计实现的一个功能,用于从一定范围的参与者中随机选取获奖者。下面是一个基于Java的简单抽奖系统设计方案: 1. 首先,确定抽奖的参与者范围。可以通过从文件、数据库或用户输入等方式获取参与者的信息,存储到集合中。假设使用List集合存储。 2. 实现一个随机数生成器,用于从参与者集合中随机选择一个作为获奖者。可以使用Random类,通过nextInt方法生成一个随机数,然后根据随机数从集合中选择一个获奖者。 3. 设计一个抽奖界面,可以选择开始抽奖或退出系统。可以使用图形界面或命令行界面实现。 4. 开始抽奖时,系统将调用随机数生成器选出一个获奖者,并将其显示在界面上。 5. 用户可以选择退出系统,或者再次进行抽奖操作。 6. 最后,设计一些异常处理机制,例如处理输入错误、无参与者等异常情况。 这个简单的抽奖系统可以通过编写Java类和方法来实现。在程序的运行过程中,通过调用随机数生成器来获取获奖者,并将其输出到界面上。用户可以重复进行抽奖,直到选择退出系统。 当然,这只是一个简单的抽奖系统设计方案,还可以根据需求对其进行扩展和优化。例如,可以添加更多的界面交互功能、奖品设置、参与者信息管理等。抽奖系统的具体实现会涉及更多的细节,可以根据实际需要进行相应的设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值