使用random函数每次随机分配 每次得出的红包值大于0.01小于剩余金额-剩余人数*0.01 最后一个人获得剩余全部就行这个想法用算法怎么表示啊,想了很久都没有想法
1 回答
![?](http://img1.sycdn.imooc.com/54584d080001566902200220-100-100.jpg)
潇潇雨雨
TA贡献1833条经验 获得超4个赞
想法就不对。提问嘛,最好先说效果,再说思考。
你要先定,精度是 2 位小数。
不是大于0.01 ,而是 大于等于0.01。
在这两个前提下:
设总金额为 S ,总人数为 N ,是小金额为 M 。( M = 0.01 )
首先检查, M * N >= S ,否则无法分配。
计算上,先定每个人已有 M ,剩下的金额就是 S - M * N 。
问题转化为 S - M * N 怎么分配。
这个就简单了,每次迭代,取 [0, L] 即可, L <= 0 ,不用迭代了。 L = S - M * N - sum(Pn) , Pn 为第 N 个人在 M 基础上多出的金额。
添加回答
举报
0/150
提交
取消