为了账号安全,请及时绑定邮箱和手机立即绑定

红包的随机分配

红包的随机分配

婷婷同学_ 2019-03-14 14:15:19
使用random函数每次随机分配 每次得出的红包值大于0.01小于剩余金额-剩余人数*0.01 最后一个人获得剩余全部就行这个想法用算法怎么表示啊,想了很久都没有想法
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

想法就不对。提问嘛,最好先说效果,再说思考。

  1. 你要先定,精度是 2 位小数。

  2. 不是大于0.01 ,而是 大于等于0.01

在这两个前提下:

  1. 设总金额为 S ,总人数为 N ,是小金额为 M 。( M = 0.01 )

  2. 首先检查, M * N >= S ,否则无法分配。

  3. 计算上,先定每个人已有 M ,剩下的金额就是 S - M * N 。

  4. 问题转化为 S - M * N 怎么分配。

  5. 这个就简单了,每次迭代,取 [0, L] 即可, L <= 0 ,不用迭代了。 L = S - M * N - sum(Pn) , Pn 为第 N 个人在 M 基础上多出的金额。


查看完整回答
反对 回复 2019-03-20
  • 1 回答
  • 0 关注
  • 457 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信