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 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
jquery插件jquery倒计时插件分享
Dec 27 Javascript
jQuery循环遍历子节点并获取值的方法
Apr 14 Javascript
javascript 判断是否是微信浏览器的方法
Oct 09 Javascript
JS作用域深度解析
Dec 29 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
小程序点赞收藏功能的实现代码示例
Sep 07 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 Javascript
修改Vue打包后的默认文件名操作
Aug 12 Javascript
Webpack的Loader和Plugin的区别
Nov 09 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版(5)
2006/10/09 PHP
PHP实时显示输出
2008/10/02 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
python中字符串前面加r的作用
2015/06/04 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
建筑自我鉴定
2013/10/19 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
餐厅总厨求职信
2014/03/04 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
重阳节简报
2015/07/20 职场文书
初一英语教学反思
2016/02/15 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS