网上流传的红包 Money 分配算法

代码不长,直接看 getMoneyRandomly 就好:

原来的版本内部都是 float 实现的,但是好像处理小数精度会出一点问题,导致总是有几分钱分配不完。

然后内部就改成了 int 来玩了(两位定点小数嘛,还算好处理),稍微好了一点吧。

然后,觉得这样有些不妥,里面要脑补一个 100 的转换。于是还改为 float,但是使用 round() 函数。这下更好一点了。

不理解,为什么要“最多能得到平均值的 2 倍”,这个设定有什么意义?

还有,按照这个代码,10 个人瓜分 0.2 元钱,第一个人最多拿到 0.04 元,但是在 WX 某次红包中,我发现第一个人拿到了 0.05 元。很是奇怪錒~

总之呢,一段比较有趣的代码。

玩开心就好~

发表评论

电子邮件地址不会被公开。 必填项已用*标注