LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

抢红包的大小是由算法决定的?如果是你来写,你要公平还是刺激?

admin
2024年8月31日 17:26 本文热度 386

我们来聊一个比较生活化的主题。


要说数字时代给我们生活带来的变化,红包的呈现形式一定是其中之一。


如今,红包不再局限于传统的纸质红包,而是成为一种流行的社交互动方式,广泛应用于各种场景,例如春节微信抢红包、生日聚会分配小礼物等等。


那么问题来了,如何设计一个既公平又有趣的红包算法怎么把一笔钱公平又有趣地分给大家呢?


01
红包算法的基本要求


一般爱说,设计红包算法,需要满足以下几个基本要求??


1. 公平性

每个参与者都应该有机会获得红包,且红包金额不能为负。这确保了参与者之间的公平竞争,避免出现“一人独大”的情况。


2. 随机性

红包金额应该具有一定的随机性,避免总是固定的数额,增加抢红包的乐趣和刺激感。


3. 不可预测性

领取红包的顺序可能会影响金额,但不能完全由顺序决定,保证每个人都有惊喜感,避免“先到先得”的模式。


4. 总金额控制

红包的总金额是固定的,不能多也不能少,确保预算控制,避免出现“超支”的情况。


02
线性切割法:一个区间切N-1刀


线性切割法是最简单的红包算法之一,它将红包金额看作一条线段,然后在上面随机切割出多个小段,每个小段代表一个红包的金额。


具体步骤如下??


1.确定总金额和人数

假设总金额为M,需要分给N个人。


2.随机选取切割点

在区间[0, M]中随机选择N-1个切割点,将线段分割成N段。


3.排序切割点

将切割点按照从小到大的顺序排序。


4.分配红包金额

每个红包的金额由相邻两个切割点之间的距离决定,越早被切割出来的段可能越大。


示例代码 (Java)



运行结果


假设总金额是100元,分5个人,那么可能的分配结果是:



这种方法的算法相对简单,易于实现;并且随机性强,每个红包的金额都有可能不同,增加抢红包的刺激感。


但也有缺点,红包金额与切割点的位置强相关,可能导致部分红包过大或过小,分配不均匀,影响用户体验。


03
二倍均值法:更为均匀的红包分配


二倍均值法在保证红包金额分布更加均匀的同时,保留一定的随机性。


它的算法核心是,每次分配红包时,都保证剩余金额不会因为一次过大的分配而耗尽。这一方法的公式为:



具体步骤如下??


1.初始化

设定总金额为M,总人数为N。


2.循环分配

每次分配时,剩余金额为当前剩余金额,剩余人数为当前剩余人数。


3.随机生成红包金额

在[0, 剩余金额/剩余人数*2]范围内随机生成一个数作为当前红包的金额。


4.更新剩余金额和剩余人数

减去当前分配的红包金额,剩余人数减少1。


5.分配到最后一个人

由于分配范围的控制,最后一个红包的金额不会过大或过小。


示例代码 (Java)



运行结果


同样的总金额100元,分5个人,可能的分配结果是:



虽然二倍均值法依然会出现“手气王”和“手气差”的情况,但程度比线性切割法更轻微,不对相对的惊喜感也就更弱一些。






在设计红包算法时,我们可以根据实际需求选择合适的方案。


更注重随机性和惊喜感,就选择线性切割法。更注重公平性和均匀性,则选择二倍均值法。


红包算法看似简单,但它在保证公平、随机和不可预测性的同时,还需要考虑到体验感。这两种方法各有优势,适用于不同的场景~


该文章在 2024/9/4 18:01:16 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved