• <small id="ck0wk"><meter id="ck0wk"><menuitem id="ck0wk"></menuitem></meter></small>

  • <big id="ck0wk"></big>

  • 鍍金池/ 問答/HTML5  網絡安全  HTML/ 紅包的隨機分配

    紅包的隨機分配

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

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

    回答
    編輯回答
    逗婦乳

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

    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 基礎上多出的金額。
    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
    男生女生一起差差差带痛声,插曲的痛的视频30分钟,男生和女生在一起差差的视频