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 each函数的链式调用
Jul 22 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
Nov 24 Javascript
javascript学习笔记(一)基础知识
Sep 30 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
JS实现向表格中动态添加行的方法
Mar 30 Javascript
60行js代码实现俄罗斯方块
Mar 31 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
微信小程序开发探究
Dec 27 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
JS学习笔记之闭包小案例分析
May 29 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 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 at(@)符号的用法简介
2009/07/11 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
python算法表示概念扫盲教程
2017/04/13 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
python中JWT用户认证的实现
2020/05/18 Python
Python如何绘制日历图和热力图
2020/08/07 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
承办会议欢迎词
2014/01/17 职场文书
小学科学教学反思
2014/01/26 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
干部年终考核评语
2015/01/04 职场文书
个人工作能力自我评价
2015/03/05 职场文书
2016新年问候语大全
2015/11/11 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书