抢红包算法怎么实现?
实现一个抢红包算法
红包功能需要满足哪些具体规则呢?
1.所有人抢到的金额之和要等于红包金额,不能多也不能少。
2.每个人至少抢到1分钱。
3.要保证红包拆分的金额尽可能分布均衡,不要出现两极分化太严重的情况。
方案
每次的金额在 [0.01, 金额/人数 乘以 2) 里随机,其中金额为剩余的钱,人数为未抢红包的人数。
比如说: 10元,5个人抢 第一轮随机: [0.01, 10/5*2) 平均可以分到 2 元,有一半的概率高于两元,一半的概率低于两元, 假设第一轮得到的是2元。 第二轮随机: [0.01, 8/4*2) 平均分到2元。 第三轮随机: [0.01, 6/3*2) 平均分到2元。 第四轮随机: [0.01, 4/2*2) 平均分到2元。 第五轮随机: 10 - 前四次的和。
我用C++写了一个,可以参考一下。 #include #include #include #include #include #include using namespace std; class RedPackage { private: queue q; double totalMoney = 0; public: RedPackage(double money, int count) { int peopleNum = count; double rawMoney = money; for (int i = 0; i < count - 1; ++i) { double avg = money / peopleNum; double m = RandRangeF(0.01, avg * 2); m = (int)(m * 100) / 100.0; money -= m; --peopleNum; q.push(m); totalMoney += m; } q.push(money); totalMoney += money; assert(totalMoney == rawMoney); } int RandRange(int m, int n) const { return (rand() / RAND_MAX) * (n - m) + m; } double RandRangeF(double m, double n) const { double ratio = static_cast(rand()) / RAND_MAX; return ratio * (n - m) + m; } void Display() { int i = 0; while (!q.empty()) { double m = q.front(); q.pop(); cout << "第" << ++i << "人抢到的红包金额是: " << m << endl; } } }; int main(int argc, char const* argv[]) { unsigned seed = time(0); srand(seed); RedPackage red(100, 5); red.Display(); return 0; }
当然一些数据的合法性检查也可以校验一下,比如说 1 元,发了11个人等等。
iQOOneo6和荣耀60之间,该如何选?如果让我选择,那一定是iQOONeo6!倒不是说荣耀60这手机不行,而且切入点跟我的需求点不一样,再说这电子产品大家都主张买新不买旧。荣耀70都快发布了,这时候再买荣耀60是不是显
荣耀70系列配置曝光全系京东方高频调光屏,处理器或是这三款日前,有海外爆料人员透露了荣耀70系列新机的配置规格,吸引了大批消费者关注。据悉,该系列新机也将有望在下个月正式跟大家见面,下面就一同来看看曝光的配置信息吧。据爆料,荣耀70系列此
数字藏品NFT是什么来头?MiloInu持续加大自身的圈内影响力NFT是一项大生意,到2021年将花费约250亿美元在它们上。但尽管有这么多钱在飞来飞去,但不可替代的代币尚未进入主流文化。数以千万计的人听说过NFT,但只有一小部分可以描述它们的
华为官宣华为应用市场登陆最新宝马7系华为终端云服务微博在今天下午1602官宣华为应用市场登陆全新BMW7系,用户在后排BMW悬浮式巨幕可体验影音娱乐新闻阅读儿童等多品类车载应用,享受视听娱乐亲子出行等多场景智慧出行!
世界经济论坛报告数字孪生技术有望打造更有韧性的城市中新财经4月23日电(记者彭大伟)记者23日获悉,世界经济论坛和中国信息通信研究院(信通院)联合发布的最新报告显示,数字孪生技术有望改善都市生活,打造更有韧性的城市。报告同时指出,
如何打造逼真适用的战场元宇宙这些新技术提供了现实可能近年来,随着信息网络技术的发展,各种新名词新概念新事物层出不穷。继大数据云计算物联网区块链等之后,元宇宙又为越来越多的人所关注。其实,元宇宙并非新名词。它是源于30年前的小说雪崩中
国家电网新型电力系统技术创新联盟成立国家电网消息,为了突破能源领域技术瓶颈,今天国家电网发起成立新型电力系统技术创新联盟。据介绍,联盟将引领我国能源行业全面推进八大电力科技创新示范工程,包括新能源主动支撑新型储能氢能
用好数字技术实现双碳目标作者张进财实现双碳目标,从根本上必须依靠科技创新,其中数字技术发挥着极其重要的作用。当前,新一轮科技革命和产业变革深入发展,数字技术日益融入经济社会发展各领域全过程。用好数字技术助
马斯克的航天公司难道比我们国家的航天技术还高?刚看到那个新闻特斯拉汽车老板马斯克创建的SpaceX航天公司送了4个非专业航天员身份的普通人上太空玩了3天,当然人家那4个人也是花了钱的,然后我国航天员杨利伟也说了,这方面我们国家
远景发布全球首批零碳电池鞭牛士4月23日消息,远景科技集团昨日发布2022碳中和行动报告。报告中,远景发布了全球首批零碳电池基于全生命周期方法(LCA法),对远景动力供货奔驰的EAHE2201A型号锂离子
纯电之魅长安新能源糯玉米长安新能源糯玉米开始预售啦,价格35万,共有七种外观颜色选择,三门四座,隐藏式门把手,续航155KM210KM。接送萌娃神器,购物出行帮手,在预售阶段交158享六重豪礼,预售认筹礼