c++编写一个微信发红包的程序。要求:分配结果越接近真实越好。
给个思路吧,这个只考虑实现的话很容易的。
首先每个人至少是0.01,所以红包总金额sum-总人数n*0.01=可凭借运气分配的红包额度rest
然后依据rest的值进行随机:在0~rest直接取随机值(这个看语言,一般都是random函数搞定)
假设第一次取了r1,那第一个红包就是r1+0.01
然后对0~rest-r1取随机数,依次减少可分配额度的值,将减少的值加到对应次数的那个红包的0.01上(这里看你存储结构,可以是数组、vector,队列和栈也都是可以的,毕竟没要求第一个取出来的奖金必须给第一个红包)
上面那一步可以随便用于一个循环结构来实现,当然你也可以函数内部递归
最后一个红包的份额直接+0.01,全部分配进去。然后就可以输出了。
代码的优化的话就要蛮多可以讲究的了,容器和算法都可以有更优解。这个都只是个最好理解的思路罢了
你这个是要写一个模拟发红包的随机算法吗?
你这个要求就很奇怪,什么叫真实?真实不就是随机吗?给你说个思路吧,你可以随机 n 个值,比如 x1,x2..xn。用户 i 的得到的钱就是 x1i/x1+x2+..xn*红包金额。最后一个用户就拿剩下的所有。
对的
运行结果是这个样子
我要怎么控制到刚好十个分完
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html