JavaScript实现微信红包算法及问题解决方法


Posted in Javascript onApril 26, 2018

专栏停更了很久,向大家说声抱歉。今天的主题是使用JavaScript模拟实现微信抢红包的算法。这个题目看起来很简单,不就是一个随机函数吗?我们一起实现看看。

我们假设有一个100元的红包,要发给10个人。为了保证公平,算法需要保证以下的原则:

  • 每个人最少能抢到0.01元
  • 每个人的机会平等
  • 所有人的金额之和等于100元

1.简单的随机函数实现

很多朋友的一般思路是:

第一步:从0-100中随机一个数,得到第一个红包金额。

第二步:从0-剩余金额中随机一个数,得到第二个红包金额。

第三步:...

最后一步把剩余的钱都给最后一个人。

以此类推,得到全部的10 个红包。但是不知道大家注意到没有,这样存在明显的 不公平 。先抢的人比较有优势,第一个人的随机范围是0-100,有可能得到较大的金额。而最后一个人的随机范围就会很小,如果第一个人抢到了90块钱,那么最后一个人就不可能有的到超过10块钱的机会。我们用代码模拟一下这个过程:

JavaScript实现微信红包算法及问题解决方法 

测试结果如下:

JavaScript实现微信红包算法及问题解决方法 

细心的朋友会注意到,余额的值不正确,这是JavaScript浮点数运算的已知问题。当然解决的方式有很多,如果你有好的办法欢迎你给我留言。

总结

以上所述是小编给大家介绍的JavaScript实现微信红包算法及问题解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript json2 使用方法
Mar 16 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
全面了解javascript三元运算符
Jun 27 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
微信小程序页面生命周期详解
Jan 31 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
Jan 30 Javascript
vue.js中ref及$refs的使用方法解析
Oct 08 Javascript
javascript sort()对数组中的元素进行排序详解
Oct 13 Javascript
p5.js绘制创意自画像
Nov 04 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
react 创建单例组件的方法
Apr 26 #Javascript
node打造微信个人号机器人的方法示例
Apr 26 #Javascript
Vue 使用中的小技巧
Apr 26 #Javascript
基于Vue实现拖拽功能
Jul 29 #Javascript
vuex操作state对象的实例代码
Apr 25 #Javascript
微信小程序商品详情页的底部弹出框效果
Nov 16 #Javascript
你点的 ES6一些小技巧,请查收
Apr 25 #Javascript
You might like
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
PHP中SESSION过期设置
2021/03/09 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
Python脚本暴力破解栅栏密码
2015/10/19 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
python数据爬下来保存的位置
2020/02/17 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
生物制药专业求职信
2014/03/11 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
幼儿教师辞职信
2015/02/27 职场文书
金砖之国观后感
2015/06/11 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript