V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wploey
V2EX  ›  程序员

总金额,总抽取数量 确定的情况下,抽奖有什么思路

  •  
  •   wploey · 2020-11-20 20:48:25 +08:00 · 1857 次点击
    这是一个创建于 1469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    eg. 20000 元 分 10000 个红包, 每个红包为 1-10 元, 怎么确定不超总金额, 又能确定有 10000 个红包呢😅
    6 条回复    2021-05-30 23:17:04 +08:00
    icql
        1
    icql  
       2020-11-21 00:44:27 +08:00 via iPhone
    说个笨办法,先拆 10000 个 1 块钱,遍历这 10000,每次从 1-900 里抽个随机数,从剩下的 10000 块扣除,加在前面的 1 块钱上面,直到把剩下的 10000 花完🤪
    chenluo0429
        2
    chenluo0429  
       2020-11-21 09:58:04 +08:00 via Android
    事先分好 10000 个红包,然后随机数抽取 0-9999 就可以了。如果要求不是那么高,可以先生成一个 10000 位的数组,每一位填充 1 。然后重复 10000 次操作,每次生成 0-9999 的随机数,向数组该位加一,如果等于 10 重新取一次,直至这 10000 被分配完为止。
    liudengchn
        3
    liudengchn  
       2020-11-21 11:41:45 +08:00
    @icql 虽然方法笨但是很实用~哈哈
    learningman
        4
    learningman  
       2020-11-21 13:54:12 +08:00
    这个可以开个 dp )
    dangbiao1991
        5
    dangbiao1991  
       2020-11-21 14:20:38 +08:00 via iPhone
    离线拆包,顺序打散。线上依次发就可以了。
    wploey
        6
    wploey  
    OP
       2021-05-30 23:17:04 +08:00 via Android
    发出去的红包没加唯一索引,有的用户同时点多次,总共薅了我 1400 多🤣机智的我后面伪造了下数据,真蛋痛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.