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 相关文章推荐
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
微信小程序封装http访问网络库实例代码
May 24 Javascript
使用JS判断移动端手机横竖屏状态
Jul 30 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
javascript操作元素的常见方法小结
Nov 13 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 Javascript
vue实现评价星星功能
Jun 30 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
解析php中curl_multi的应用
2013/07/17 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
py中的目录与文件判别代码
2008/07/16 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
python简单验证码识别的实现方法
2019/05/10 Python
django 单表操作实例详解
2019/07/30 Python
Python Subprocess模块原理及实例
2019/08/26 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
中式结婚主持词
2014/03/14 职场文书
免职证明样本
2014/10/23 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
给上级领导的感谢信
2015/01/22 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
2015年化验员工作总结
2015/04/10 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
人工作失职检讨书
2015/05/05 职场文书
创业计划书介绍
2019/04/24 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL