手机版

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

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

专栏停了很久,对大家说对不起。今天的题目是用JavaScript模拟微信抢红包的算法。这个题目好像很简单,不是随机函数吗?让我们一起意识到。

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

每个人至少能抢到0.01元。每个人都有平等的机会。所有钱的总和等于100元。1.简单随机函数实现

很多朋友的大致想法是:

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

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

第三步:

最后一步是把剩下的钱给最后一个人。

以此类推,10个红包都得到了。但不知道大家有没有注意到,这显然是不公平的。第一个人有优势。第一人称的随机范围是0-100,有可能得到更大的金额。最后一个人的随机范围会很小。如果第一个人抢到90元,那么最后一个人最多拿不到10元。让我们用代码来模拟这个过程:

测试结果如下:

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

摘要

以上就是边肖介绍的用JavaScript实现微信红包的算法和解题方法。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:JavaScript实现微信红包算法及解题方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。