在线二区人妖系列_国产亚洲欧美日韩在线一区_国产一级婬片视频免费看_精品少妇一区二区三区在线

鍍金池/ 問答/HTML5  網(wǎng)絡(luò)安全  HTML/ 紅包的隨機分配

紅包的隨機分配

使用random函數(shù)每次隨機分配 每次得出的紅包值大于0.01小于剩余金額-剩余人數(shù)*0.01 最后一個人獲得剩余全部就行

這個想法用算法怎么表示啊,想了很久都沒有想法

回答
編輯回答
逗婦乳

想法就不對。提問嘛,最好先說效果,再說思考。

  1. 你要先定,精度是 2 位小數(shù)。
  2. 不是大于0.01 ,而是 大于等于0.01。

在這兩個前提下:

  1. 設(shè)總金額為 S ,總?cè)藬?shù)為 N ,是小金額為 M 。( M = 0.01 )
  2. 首先檢查, M * N >= S ,否則無法分配。
  3. 計算上,先定每個人已有 M ,剩下的金額就是 S - M * N 。
  4. 問題轉(zhuǎn)化為 S - M * N 怎么分配。
  5. 這個就簡單了,每次迭代,取 [0, L] 即可, L <= 0 ,不用迭代了。 L = S - M * N - sum(Pn) , Pn 為第 N 個人在 M 基礎(chǔ)上多出的金額。
2017年4月11日 11:52
編輯回答
冷眸
function rp(total, n) {
  var remain = total
  var ret = []
  for (let i = 0; i < n - 1;i++) {
    let m = Math.ceil(Math.random() * 100 * (remain - (n - (i + 1)) * 0.01)) / 100
    ret.push(m)
    remain -= m
  }
  ret.push(Number(remain.toFixed(2)))
  return ret
}
2017年7月7日 06:45