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 相关文章推荐
一些不错的js函数ajax
Aug 20 Javascript
js常用代码段收集
Oct 28 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 Javascript
javascript回到顶部特效
Jul 30 Javascript
微信小程序左滑删除效果的实现代码
Feb 20 Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
Dec 13 Javascript
canvas绘制折线路径动画实现
May 12 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php获取地址栏信息的代码
2008/10/08 PHP
php学习之运算符相关概念
2011/06/09 PHP
php注销代码(session注销)
2012/05/31 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
表格 隔行换色升级版
2009/11/07 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
Python与shell的3种交互方式介绍
2015/04/11 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
高一自我鉴定
2013/12/17 职场文书
大学生职业规划论文
2014/01/11 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
医院营销工作计划
2015/01/16 职场文书
自愿离婚协议书2015
2015/01/26 职场文书