JavaScript 仿微信红包算法


先来看下效果 仿微信红包算法

只是想要实现其效果,所以代码方面有所欠缺。

背景:

公司要做一个新功能,类似微信红包,尽管最后不是我做,但我还是想要研究下这个功能是怎么实现的。最后花了半天时间模仿了一个

知乎了一下微信红包算法,大概得知其实现原理。

1. 先将红包的总额 - 去份数 * 1(最少每人获得 0.01 元,这里为什么是乘 1 而不是乘 0.01 ? 因为浮点型计算可能不准确,所以前面的计算过程使用整数,最后得到结果除 100 就行)

 

 

2. 每一份得多少钱?

每一份的金额的范围 = 0 ~( 剩余金额 / 剩余份数 * 2) + 预分的金额

 

var t = m1 / (this.options.k - this.options.i) * 2;
if (t >= m1) t = m1; 

_m = 1 + (Math.floor(Math.random() * t));
var t = m1 / (this.options.k - this.options.i) * 2;

if (t >= m1) t = m1; 

_m = 1 + (Math.floor(Math.random() * t));

需要注意的地方:

1.红包分 9 次就行了,最后一次的金额等于分完 9 次后剩下的金额。

2.计算时不要使用浮点型,在最后得出结果时将其除以 100 就行,这样得出的结果更加准确,并且解决一系列的问题(比如:10元分成 10份,最后总是会出现 0 或者 负数的情况)

 


博主很懒,什么也没写!