微信红包随机数字_微信红包的随机算法是怎样实现的?

随便看了下,好多人考虑这考虑那,又是红包不能为0又是要完全随机又是先抽后抽期望不同诸如此等,我提供2种思路,可以完全避免这些问题,而且我觉得每个红包应该在第一个人开出前就已经确定好了的,每个人开奖只是按顺序或者随机取其中的值而已

1.直接在(0,100)区间随机9个不重复的数,然后把0和100加进去排个序,这10个红包就是相邻的大数减小数的值

2,随机出来10个正数,每个红包分别是随机出来的的数*100/十个随机数总和

这两种思路实现起来都挺简单易于理解。

如果再深入点,我加些条件,最小红包不能小于3元,或者最大红包不能大于最小红包3倍,抑或有一半红包10块以上怎么办,那么第一种思路就行不通了,而第二个思路却可以大行其道,这里我们定义一个区间系数k,随机取值是在(1,k)取的,如果k=2那么狠明显最大红包不会大于最小红包2倍,而最大红包,最小红包,几个红包大于小于多少最后均可以转化到这个系数k上,而这个k是可以通过临界值求得的,比如最大红包问题,假设红包总额z,发给m个人,最大红包是d,那么通过临界值可以算得k=d*(m-1)/z-d,如果100红包发10人,最大红包20块,那么求得k=1.44,我们就可以按第二种思路在(1,1.44)区间随机10个数然后分别求得10个红包的大小,其他几种限定条件类似也可以求得k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值