最*碰到一些情况,把思路重新整理了一下,敲出代码。记下来,以后可以借鉴,进一步优化等。大致的思路:红包主要分两种,一种是*均分配,一种是随机分配。1、*均分配
*均分配相对好理解,只要把钱*均分给每一个人就可以了
这里有一个情况,就是钱的总额是固定的,但是分配的人数,不一定可以整除余0,那么剩下的如何分配呢?
这里,剩余的钱(极少),多分到的人,也就是多分1分钱(在计算处理时,单位是“分”)
所以,使用的处理办法是,从前到后(谁手快,谁多分,蚊子再小也是肉),逐一分这剩余的钱,每人1分钱,直到钱没为止
2、随机分配
我这个随机分配,比较简单,只比*均分配多了一个步骤(此步骤根据需要,可以循环多次使用)。
先是随机分配的两个特殊情况:
a.总金额不够所有人分。例如,最小的钱是1分钱,分给10个人。是不可以的
b.总金额正好只能每人*均分1分钱。例如,0.1元,分给10个人,任何一个人多1分钱,就会有人没钱分
这两个特例单独处理
接下来的情况就是,正常的随机分钱,为了尽量让每个人分钱的概率差不多,用了下边的方法
a.先将钱按当前分钱的人数计算*均值
b.随机的钱数的取值范围是(1,*均值)
c.可以分配的总钱数减去生成的随机钱数,得到下一次分配时的可分配总钱数
d.重复a~c步骤,最终完成随机分配
按照以上的方法随机分完之后,消耗的总金额是一定小于等于输入的总金额的,那么,在处理完随机分配之后,还要对剩余的金额处理
这里实现的,就是将剩余的金额,再用*均分配的方式,分散到每一个人的手里