首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    算法思考:红包金额生成

    本篇先不关注整体架构,选择红包金额的计算方法作为分析内容。 在当时的项目中,红包金额计算主要是采用了基于一些入参的随机数生成,并且生成的是单个红包金额,并未使用队列方式做预生成。...二 题目描述 要求设计在微信群抢红包的算法,红包总金额为 m 元,分成 n 份,要求返回一个红包金额数组。...一个简单的方法,n 个人,生成 n 次金额数据,当然,我们也要保证 n 次的金额综合=m 元,且每次每人领取到的金额最小值是 0.01 元,也就是一分钱;最大值是当前的剩余金额-剩余人数。...例如总金额 1 元,5 个人可抢,那么第一个人可以抽到的最大金额是 0.96 元,之后每个人领取一元,这是最极端的情况。 其次,上面的这种算法是否能够保证绝对随机?...既然生成的金额数组可能不是绝对平均,那么我们再生成一次随机数组,调整初始金额数组中各元素的顺序,做个随机乱序,那么就可以接近题目要求的效果。

    1.3K30

    Java实现红包随机金额算法

    答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。 2....答:2014年的红包一点开就知道金额,分两次操作,先抢到金额,然后再转账。 2015年的红包的拆和抢是分离的,需要点两次,因此会出现抢到红包了,但点开后告知红包已经被领完的状况。...分配:红包里的金额怎么算?为什么出现各个红包金额相差很大? 3. 答:随机,额度在0.01和剩余平均值*2之间。...红包的设计 答:微信从财付通拉取金额数据郭莱,生成个数/红包类型/金额放到redis集群里,app端将红包ID的请求放入请求队列中,如果发现超过红包的个数,直接返回。...答:会出现金额一样的,但是手气最佳只有一个,先抢到的那个最佳。 12. 每领一个红包就更新数据么? 答:每抢到一个红包,就cas更新剩余金额和红包个数。 13.红包如何入库入账?

    1.1K20

    如何生成微信红包金额

    输入数据: 红包总金额 amount 红包个数 count 如果 amount / count < 0.01 元,报错:单个红包金额不可低于0.01元,请重新填写金额。...输出数据: 一个数组:数组中包括 count 个红包金额(每个金额都大于等于0.01元,所有红包的金额加起来等于总金额 amount) 一个重要问题 首先我们先确定一个重要的问题:每个红包的金额是先生成好还是在边抽边生成...2 计算红包金额 好像已经差不多答案了。。 但是有几个问题需要考虑: 精度为0.01元,金额不能出现 4.415011 如果算出来的红包金额小于0.01元,怎么办? ?...解决办法: 所有的红包金额需要 floor (舍掉多余的小数位) : 比如 a1 的金额 从 4.415011 –> 4.41,最后一个红包 = 红包总金额 – 已经 floor 的红包的和 不管是否小于...0.01,先把每个红包的金额计算出来。

    4K80

    JSON金额解析BUG的解决过程

    就在春节放假前最后一天,当客户完成交易后,运营同事发现一个天大的问题,流水表中的部分金额,跟提交支付的金额有出入,差了几分钱。 这位客官说了,几分钱的问题,还是问题?...先从不同的数据库中找出付款前后的金额进行比较,发现还真不是个案。这是当时比较的结果,黑体部分有差异。 ? 这些数据中,业务系统的金额跟客户提交金额相等,账户记录的金额有异。...通过检查各个环节的报文及数据库中保存的数据,发现问题出在第4步,金额在支付系统中无误,发送到账户系统并保存到数据库后就出现了误差。这儿发生了什么?...仔细查看json字符串,发现金额没有使用双引号括起来,说明生成json的时候,直接赋值的是金额,而不是转成字符串后再赋值。 那么如果将金额用双引号括起来,会有这个问题吗?...1.修改json格式 用这个方案,只需要在支付系统中生成json对象的时候,将金额转成字符串之后在赋值到json即可。

    1.1K50
    领券