本文格式为Word版下载后可任意编辑和复制 1. 钱包钱数满意截尾正态随机数分布。大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上全部的随机 数,得到红包价值。 别人在抢红包,程序员在讨论红包算法 这种分布意味着:低于平均值的红包多,但是离平均值不远;高于平均值 微信红包在羊年春节的火爆程度不言而喻,广告主投入5亿现金红包,与的红包少,但是远大于平均值的红包偏多。 央视羊年春晚独家合作起到了巨大的推动作用。这就像一针大补丸,在短时 图1. 钱包价值与其频率分布直方图及其正态拟合 间内给微信带来了极大的关注度与流量。除夕全天微信用户红包总发送量达 但看分布直方图并不能推出它符合正态分布,但是考虑到程序的简洁性和到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分随机数的合理性,这是最合乎情理的一种猜想。 钟。 越是后面的钱包,价值普遍更高 抛开微信红包的市场价值不谈,红包本身的算法也引发了热议,由于官方 图2. 钱包序列数与其价值关系曲线 没有给出明确的说法,各家也是众说纷纭,我下面也为大家带来几种分析。 从图2中的线性拟合红线可以看到,钱包价值的总体变化趋势是在渐渐增 首先看看数据分析帝 大,其变化范围大约是一个绿色虚线上下界划出的“通道”。(曲线可以被 大多数人都做出自己的猜想,这也是在不知道内部随机算法的时候的唯一围在这么一个正合乎常规的“通道”中,也从侧面反映了规律1的合理性,选择,但是大多数人没有给出自己亲自的调查结果。这里给出一份100样本说明白并不是匀称分布的随机数) 的调查抽样样本数据,并提出自己的猜想。 第 1 页 共 3 页 微信红包数字规律 本文格式为Word版下载后可任意编辑和复制 从另一个平均数的图中也可以看出这一规律。 图3. 平均数随序列数的变化曲线 在样本中,1000价值的钱包被分成100份,均值为10。然而在图3中我们可以看到在最终一个钱包之前,平均数始终低于10,这就说明白一开头的钱包价值偏低,始终被后期的钱包价值拉着往上走,后期的钱包价值更高。 3. 当然平均数的图还可以透露出另一个规律,那就是最终的那一个人往往简单走运抽得比较多。因为最终那一个人是钱包剩下多少就拿多少的,而之前全部人的平均数 都低于10,所以至少保证了最终一个人会高于平均值。在本样本中,98号钱包抽到35 ,而最终一份钱 包抽到46。 综上,依据样本猜想: 1. 抽到的钱大多数时候跟别人一样少,但一旦一多,就简单多许多。 2. 越是抽后面的钱包,钱越简单多。 3. 最终一个人往往简单撞大运。 点评:这种明显很实际有差异,我每次不管什么时候抢都是几毛钱。 第二位同学写了一个简洁python 代码 据观看,红包分钱满意以下几点: 1.不会有人拿不到钱 2.不会提前分完 3.钱的波动范围很大 红包在一开头创建的时候,安排方案就订好了。抢红包的时候,不过是挨个pop up而已。 因此 python 代码如下: def weixin_divide_hongbao(money, n): divide_table = [random.randint(1, 10000) for x in xrange(0, n)] sum_ = sum(divide_table) return [x*money/sum_ for x in divide_table] 不过上述算法还有两个小问 第 2 页 共 3 页 本文格式为Word版下载后可任意编辑和复制 题: 1.浮点数精度问题 2.边界值的处理 第三位同学根据网上流传的python写了一个java的版本 int j=1; while(j1000) { int number=10; float total=100; float money; double min=0.01; double max; int i=1; List math=new ArrayList(); while(inumber) { 第 3 页 共 3 页 本文来源:https://www.wddqw.com/doc/b65497e4920ef12d2af90242a8956bec0975a5a0.html