这几天比较闲,自己研究了一下微信红包的算法。用度娘查了一下,看到了一个官方的回答:“随机,额度在0.01和(剩余平均值2)之间。”也就是说,每个人拿红包的时候,生成的金额都是即时计算,这样可以减少内存的占用,而每个红包的额度是在0.01和(剩余平均值2)之间,就是说,如果100块5个红包,第一个红包的钱会在0.01到40之间,但玩过抢红包的人都知道,这是不对的,第一个抢,拿超过剩余平均值*2是很平常的事。

而我自己在没看到这个回答之前,自己的设想是发红包后就已经将金额分配好,然后等人来打开红包。

public function index($money,$count){

if($count==1){

echo $money;exit;

}

$max=$money*100;

if($max';

}

return $data;

}

我的思路是,红包总金额金额就等于一条直线的长度,然后在直线上随机放n-1个点,点与点之间的距离就等于每个红包的金额。一开始,我以为,这样会相对平均,然后我测试了100块发10个红包,测试了一万次,结果发现

而且这还是我打乱点与点长度排序后所得出来的结果,

如果没打乱之前的结果时这样,相差更大。

明显可以看出,离平均,差好远,是我的思路本来就是错误的吗?

回复内容:

这几天比较闲,自己研究了一下微信红包的算法。用度娘查了一下,看到了一个官方的回答:“随机,额度在0.01和(剩余平均值2)之间。”也就是说,每个人拿红包的时候,生成的金额都是即时计算,这样可以减少内存的占用,而每个红包的额度是在0.01和(剩余平均值2)之间,就是说,如果100块5个红包,第一个红包的钱会在0.01到40之间,但玩过抢红包的人都知道,这是不对的,第一个抢,拿超过剩余平均值*2是很平常的事。

而我自己在没看到这个回答之前,自己的设想是发红包后就已经将金额分配好,然后等人来打开红包。

public function index($money,$count){

if($count==1){

echo $money;exit;

}

$max=$money*100;

if($max';

}

return $data;

}

我的思路是,红包总金额金额就等于一条直线的长度,然后在直线上随机放n-1个点,点与点之间的距离就等于每个红包的金额。一开始,我以为,这样会相对平均,然后我测试了100块发10个红包,测试了一万次,结果发现

而且这还是我打乱点与点长度排序后所得出来的结果,

如果没打乱之前的结果时这样,相差更大。

明显可以看出,离平均,差好远,是我的思路本来就是错误的吗?

看看这里的红包算法合你的要求不

https://github.com/qieangel2013/yaf

微信金额是拆的时候实时算出出来的,采用的是纯内存计算,不需要预算空间存储。采取实时计算金额的考虑:预算需要占存储,实时效率很高。

这个答案分析的不错你可以看下http://coderroc.com/article/%E6%95%B0%E5%AD%A6%E5%92%8C%E7%AE%97%E6%B3%95/%E5%BE%AE%E4%BF%A1%E7%BA%A2%E5%8C%85%E9%9A%8F%E6%9C%BA%E7%AE%97%E6%B3%95%E5%88%9D%E6%8E%A2.html

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

红包随机分配问题php,自己写仿微信红包的随机分配,为什么平均数差距这么大?...相关推荐

  1. 红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP

    本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...

  2. 红包的分配算法php,php仿微信红包分配算法的实现方法,红包算法

    php仿微信红包分配算法的实现方法,红包算法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @para ...

  3. 红包的分配算法php,php仿微信红包分配算法的实现方法,红包算法_PHP教程

    php仿微信红包分配算法的实现方法,红包算法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @para ...

  4. php 红包算法教程,php仿微信红包分配算法的实现方法

    php仿微信红包分配算法的实现方法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int ...

  5. Android 仿微信红包动画 平移动画

    Android 仿微信红包动画 平移动画 先看效果图: 简单思路: 先找好素材,一张红包封面和 "开"这个图片,先用ps将红包图片P成两部分,两个椭圆的样子."开&quo ...

  6. php+仿微信发红包+负数,php仿微信红包分配算法的实现方法

    本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...

  7. php 仿微信发红包 负数,php仿微信红包分配算法的实现方法

    本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...

  8. 如何用html写出微信红包界面,问题详情

    1.为什么其他人可以领WiFi红包,而我没法领取?本次活动仅支持腾讯手机管家安卓版5.4版本以上,请您升级至最新版本再参与活动.(进入管家=>右上角个人中心=>关于=>检查更新) 2 ...

  9. php 随机钱数,PHP 仿微信红包金额随机

    博主寒冰最近闲来无事.就想研究一下微信红包的金额随机算法.早在微信红包刚出来的时候就研究过.始终不得要领.后来,通过查阅诸多资料.听说要实现"正态分布".这个理论的东西不想深挖.恰 ...

最新文章

  1. 用计算机进行图片处理教学设计,三年级信息技术上教学设计
  2. 同步中断和异步中断区别
  3. oracle ssh测试不通过,ssh 连接不上 oracle linux 7.2
  4. Android API Guides---RenderScript
  5. Spring,Reactor和ElasticSearch:从回调到React流
  6. centos7下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named ‘_ctypes‘的解决办法
  7. C#利用委托实现窗体间的值传递
  8. vue3.0中使用百度离线地图
  9. 【工具使用】AI帮你写代码
  10. 对于拖延症的最好方法
  11. [c语言编程入门]迭代法求平方根
  12. linux秘钥登录使用authorized_keys不生效
  13. [js常用积累] js正则表达式验证手机号和数字验证码
  14. cv::fitLine用法
  15. 风吹雪支付系统易支付去后台验证版本代理系统
  16. 监控摄像头上滤光片的作用是什么
  17. 【附源码】Python计算机毕业设计特大城市地铁站卫生防疫系统
  18. (一)立创EDA的安装
  19. 线性代数学习笔记6-2:行列式的理解、行列式的性质
  20. 计算广告第一章——在线广告综述

热门文章

  1. java使用Websocket获取HttpSession出现的问题与解决
  2. mvc:annotation-driven /注解意义(转)
  3. Linux命令之乐--iconv
  4. Java编程思想第四版——第十五天
  5. 快速学习、快速决策、快速改变;突破自我
  6. 【Python基础】文件读写
  7. C++之左值引用与右值引用
  8. Linux/Android的cpu/memory/磁盘占用情况
  9. 可视化理解卷积神经网络
  10. Android逆向基础笔记—Android中的常用ARM汇编指令