我要抽奖

今天到公司的第一天,兴奋还没走完,就来了一个比较有挑战的TASK。。哈哈,我喜欢

以前就知道可以用概率算法来模拟抽奖,但是都是一些确定型的问题,如给定的总人数,给定奖品数,这样模拟起来就很好办,方法也比较多,最容易的是直接用SQL语句随机抽出给定人数中奖, select * from people order by rand() limit N; N为中奖人数。也可以用随机算法,给全部人个标号id,随机产生不重复的N个整数,对应的ID即为中奖者。

不过,当总人数未知,且是动态改变,同时是每个人即时抽奖,立刻得到抽奖结果的话,逢人数或逢时间中奖是一种解决方法,目前还没想到怎样用纯概率算法去模拟。逢人数中奖,即事先规定抽奖人数达N时,第N个人中奖,以此类推。但此法由于人数未知,也不好定N。 这样,逢时间中奖看起来是更优的解决方案了,指定一些时间点或时间段,此时抽奖的人中奖。当然,指定这些‘定点’,可以是手动,也可以是随机产生。


目前思路还是个大概,继续摸索中。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值