首页
学习
活动
专区
工具
TVP
发布

PHP实现的随机红包算法示例

本文实例讲述了PHP实现的随机红包算法。..., 红包金额用整数表示, 假设每个红包里边有x个糖豆, 每个人最少一个豆 第一种: 每个红包的最大金额是: (剩余金额/剩余红包)*2, 需要开始的时候预先分配给每个人一个豆 function randBean...: (剩余金额/剩余红包)*3; 但是要求每次最少发2个红包 第三种, 线段法, 随机生成几个数字, 将一个直线分成几段, 每段的长度(这个波动比较大, 不是很平均, 如果限制了每个红包的大小, 会比较麻烦...剩余人数*1个豆; 去掉这些必须剩余的豆后, 以剩下的豆的平均值为最大值进行随机生成本次豆 PS:这里再为大家提供两款功能类似的在线工具供大家参考: 在线随机数字/字符串生成工具: 在线随机字符.../随机密码生成工具: 希望本文所述对大家PHP程序设计有所帮助。

83520
您找到你想要的搜索结果了吗?
是的
没有找到

解密微信红包算法及抢红包案例实现

红包算法:拆红包算法其实有很多,但是比较合理的可以采用二倍均值算法代码实现二倍均值算法实现红包二倍均值,字面也是是红包平均金额的两倍,为了保证随机,取随机区间,最大值为平均金额的两倍,所以最后公式如下...0 // avgMoney -1 表示最接近二倍均值,而不能等于,这样,保证最后一个红包不为 0,如果不 -1,有可能每次获得随机都是最大值,那么到最后有可能剩余的红包只能为...接下来模拟不-1的情况下,假设100块分5个红包,每次随机都取最大值,那么有如下情况:红包useMoneyavgMoney每次随机最大本次红包金额1020 * 2new Random().nextInt...,有可能每次获得随机都是最大值,那么到最后有可能剩余的红包只能为 0。...抢红包的核心思想是将红包金额和数量进行随机分配,以实现公平、随机的抢红包效果。解密过程包括生成红包、抢红包、确认抢红包和查看红包等步骤。然后通过随机生成红包金额,实现红包的发放和抢红包的功能。

37910

php生成微信红包数组的方法

php/ * @param $total [你要发的红包总额] * @param int $num [发几个] @return array [生成红包金额] /function getRedGift($...total, $num = 10) { $min = 0.01;//最小的红包金额$wamp = array(); $returnData = array(); for ($i = 1; $i < $num...; $i++) { $safe_total = ($total - ($num - $i) * $min) / ($num - $i); //当前允许红包金额的最大值if ($safe_total..., mt_rand(min,max)是生成min到max的随机整数,包含min和max,所以为了生成的红包金额有小数,所以*100先,再100$total = $total - $money; //剩余红包总额...总结 以上所述是小编给大家介绍的php生成微信红包数组的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

96821

超大群怎么保证抢红包公平

员工会在群里分享一年来的感人故事,业绩以及对公司的祝愿,老板们可能在群里发红包,表示对员工的感谢。群里的信息会实时投影到现场的大屏幕上,同时也会推送到个人手机上。...普通消息延迟一点大家也就忍了,但是红包怎么办呢?...即使1个红包消息,也需要进行5000次推送,这个点上也是有先有后的。 延迟很难避免,我们在推送顺序上做一些策略来尽量保证红包的公平性。...尽管对于单个红包,某些成员的推送顺序有优势(优势也是随机的),但对于多个红包,能保证不会总是某些人有优势。 消息从服务端推送出去后,到底先到达谁的手机就不好说了(网络因素太复杂)。...因此,能不能抢到红包,主要还是看运气!

66010

微信抢红包实现方式

红包流程 红包生成,数据库中创建红包信息,把红包的ID、数量放入缓存 用户抢红包,分为抢和拆两个动作,抢动作只是决定用户是否得到红包资格,如果抢到了,进入拆动作,此时实时计算红包的金额、记录红包流水记录...红包金额的计算方法 随机,额度在0.01和剩余平均值*2之间 例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。...当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/7*2)=17.14之间 高并发下 如何保证红包不被更多人抢走 抢的动作就是对红包剩余数量减一,...这个减操作是原子的,缓存的CAS模式来保证操作的唯一性 CAS模式可以理解为:在我获取这个key之后,没人修改过它,我才能成功保存这个key的值 例如当前红包剩余数量为10,此时有很多人同时来抢,也就是要执行多个减一的操作

3.6K100

QQ红包 | 趣味新玩法是怎么设计的?

随着几个新玩法的推出,QQ红包又重新受到了年轻用户群体们的关注和欢迎,成为“沙雕”网友们日常的快乐源泉,那么这些玩法是怎么设计出来的呢,本文为你揭开背后的故事。...这些红包玩法受到用户的欢迎,获得了许多赞誉。但是,它们的推出并不是一蹴而就的,而是项目团队许多次探索和打磨的结果。那么,这些QQ红包新玩法是怎么设计的呢,现在让我们揭开背后的故事。 QQ红包是什么?...新红包玩法:K歌红包 K歌红包的主要玩法:唱歌达标领红包,发红包者选择歌曲片段与红包一同发出,领红包的人需要唱出歌曲,并且K歌评分达标之后才可领取红包。...其中,互动性是指从年轻用户喜好的事物筛选,寻找可以激发用户产生互动的切入点;趣味性是指技术手段可实现的,设定一定的红包领取门槛,让用户更有参与感。...接龙红包 接龙成语领红包,用户在发红包时选择一个成语与红包金额一同发出,领红包的人需要根据初始成语的末字拼音进行接力,通过拼音抓取识别技术,判定接龙成语拼音一致即可领取红包,下一个领红包的用户,需要接龙上一个人的成语继续领取红包

1.7K10

Java实现微信抢红包

红包的这个问题,最最开始关注是因为阿里的场景面试题提到过的 当时的代码处理还很简单,先从普通场景探索下红包问题 拼手气红包--线性切割法 场景:100块钱红包,群内50人,红包数量为...2.二倍均值法 这是一种很合理很公平的抢红包算法了 在此我们假设 红包剩余金额为 M 红包剩余数量为 N 这种算法就是每次都在区间[0,M/N×2] 随机取一个 假设100元红包发10个人,那么合理的做法应该是每个人领到...,本公众号的阿里面试题 题目:写一个发红包程序,连续发N次红包(每次红包总金额相同),每个红包随机分给M个人 要求 (1)最大红包金额不能超过红包总金额的90%; (2)连续N次发红包,获得最佳手气(红包金额最高...如果存在相同最大金额则重新计算 3.如果全部处理完还剩余钱怎么办? 将钱加到小红包里 4.如果钱是负数怎么办?...throw new RuntimeException(); } /** * 考虑到第一个人抢到到金额概率永远大于后面的人(金额大小结果随着人数依次递减),简单的随机算法

7.1K20

漫画:如何实现红包算法?

发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 1.所有人抢到金额之和等于红包金额,不能超过,也不能少于。 2.每个人至少抢到一分钱。 3.要保证所有人抢到金额的几率相等。 ?...方法1:二倍均值法 剩余红包金额为M,剩余人数为N,那么有如下公式: 每次抢到的金额 = 随机区间 (0, M / N X 2) 这个公式,保证了每次随机金额的平均值是相等的,不会因为抢红包的先后顺序而造成不公平...举个栗子: 假设有10个人,红包总额100元。 100/10X2 = 20, 所以第一个人的随机范围是(0,20 ),平均可以抢到10元。...当N个人一起抢红包的时候,就需要确定N-1个切割点。 因此,当N个人一起抢总金额为M的红包时,我们需要做N-1次随机运算,以此确定N-1个切割点。随机的范围区间是(1, M)。...这样每个人来抢红包的时候,只需要顺次领取与子线段长度等价的红包金额即可。 这就是线段切割法的思路。在这里需要注意以下两点: 1.当随机切割点出现重复,如何处理。

3.5K21

C# 实现红包算法

二倍均值法(公平版) 发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 1、所有人抢到金额之和等于红包金额,不能超过,也不能少于。 2、每个人至少抢到一分钱。...假设剩余红包金额为M,剩余人数为N,那么有如下公式: 每次抢到的金额 = 随机区间 (0, M / N × 2) 这个公式,保证了每次随机金额的平均值是相等的,不会因为抢红包的先后顺序而造成不公平。...1941,1173,567,1280,1558,618,183,644,133,1903 10000 1313,735,1198,1173,1288,522,1879,1155,59,678 10000 上述示例中需注意,Random是一个伪随机生成器...当N个人一起抢红包的时候,就需要确定N-1个切割点。 因此,当N个人一起抢总金额为M的红包时,我们需要做N-1次随机运算,以此确定N-1个切割点。 随机的范围区间是(1, M)。...这样每个人来抢红包的时候,只需要顺次领取与子线段长度等价的红包金额即可。 需要注意一下两点: 1、每个人至少抢到一分钱。

80930

微信抢红包模拟实现

微信抢红包模拟实现 1、抢红包介绍 微信抢红包基本流程: 发红包(拼手气红包) 需要发红包用户输入红包总个数、总金额,然后发红包。...2.抢红包 需要满足规则: 所有人抢到金额之和要等于红包总金额 每个人至少抢到一分钱 要保证所有人抢到金额的几率相等 2、二倍均值法 目前市面上主流实现是二倍均值算法(听说微信的红包实现是用的这个,...算法核心逻辑实现(拆分红包) /** * 红包分割方法 * * @param amount 总金额 * @param min 每个红包最小值...* @param num 红包 */ public static List splitRedPackage(BigDecimal amount, BigDecimal...if(a.compareTo(b) == 0){ return true; } return false; } 3、流程模拟实现

23620

Java实现微信抢红包

2.二倍均值法这是一种很合理很公平的抢红包算法了在此我们假设红包剩余金额为 M红包剩余数量为 N这种算法就是每次都在区间[0,M/N×2] 随机取一个假设100元红包发10个人,那么合理的做法应该是每个人领到...如果存在相同最大金额则重新计算3.如果全部处理完还剩余钱怎么办?将钱加到小红包里4.如果钱是负数怎么办?...微信抢红包功能的实现是利用互联网技术和算法,结合微信的消息推送功能,实现红包的发放和抢夺。2. 功能实现2.1 生成红包在微信抢红包功能中,参与者可以设置红包的金额、个数和其他的条件。...技术实现3.1 使用Java语言实现微信抢红包功能可以借助Java的面向对象特性来实现。首先,可以定义一个红包类,包括红包的金额、个数和其他属性以及相关的方法。...可以使用Thread类来创建多线程,实现红包的发送和抢夺。3.3 可以利用微信提供的开发接口来实现红包的发送和抢夺。通过调用微信提供的API,可以实现红包的发送和抢夺功能。4.

29110
领券