盲盒想中大奖?还不如去买彩票!!!——从程序的角度揭秘盲盒。
Posted JustJavaIt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了盲盒想中大奖?还不如去买彩票!!!——从程序的角度揭秘盲盒。相关的知识,希望对你有一定的参考价值。
电影《阿甘正传》里有一句经典台词“人生就像一盒巧克力,你永远不知道下一颗是什么味道。”这大概就是盲盒带来的感受。近年来,盲盒经济在国内大热。从手办盲盒、到手机盲盒、再到名牌包盲盒、数码产品盲盒,各类盲盒产品层出不穷,深受广大消费者尤其是年轻消费者的喜爱。但新模式往往潜藏着新风险,盲盒消费的随机概率机制容易引发消费者的赌徒心理和非理性消费。对于盲盒商品,商家打的是“心理战”,通过虚假宣传,譬如,商家会虚构中奖概率好比宣称100%中奖,不喜欢就退的方式、或是夸大商品价值、质量等来刺激消费者购买。
今天我将从程序的角度为大家揭秘盲盒的开奖流程,希望大家理性看待盲盒,理性消费。
如何才能中大奖(抽iphone13举例)
如果你想抽中”SSR至尊”商品类型中的最好的商品好比iphone13,首先你得抽中”SSR至尊”商品类型,概率为0.008%,也就是说你抽十万次能抽中8次”SSR至尊”商品类型。假设你运气好抽中了”SSR至尊”商品类型,你以为你就能iphone13了?说明你还太年轻,还有第二步判断,需再通过事先为商品设置好的权值再随机抽一次,假设抽中iphone13概率是10%,假设你真的欧皇转世就中的商品是iphone13,想想就很开心是吧,如果我告诉你还有第三步判断呢?第三步是查询你过往的订单相关信息来判断是否达到商品的门槛,好比抽中iphone13的门槛是支付过200次,同时满足之前没有中过SSR至尊商品。如果不符合则重新开始前面的抽取步骤直到满足抽中商品的相关条件,如果符合那么恭喜你真的中了iphone13。
没骗你吧,盲盒想中大奖?还真不如去买彩票!!!
开盒准备工作
下面将介绍几张跟开盒相关的表,用于查询用户与盲盒相关数据,为后面开盒做准备。
一.盲盒商品类型概率表
用于查询用户买的盲盒id(eg:19)下的四种商品类型(至尊,稀有,超稀有,普通)抽取的概率。
字段说明:
(1) 首次保底(first_minimum):用户满足一定的抽取次数,一定能中某商品类型(1至尊,2超稀有,3稀有,4普通); 保底只控制用户能否抽到商品类型,不针对特定商品; 仅限一次,如果在保底前已经抽到则消耗掉首次保底,则门槛计数重置为0; 实际生产中只使用在“稀有”上,保底数为10;
(2) 实际概率(real_rate):为不同商品类型(1至尊,2超稀有,3稀有,4普通)抽出的概率,比如1为”SSR至尊”,配置概率为0.100%(精确到千分位),则用户抽出”SSR至尊”的概率为0.100%,注意:这并不意味着某款里的某一个商品的抽出概率为0.100%,只跟商品类型有关。数据库以整数进行配置,比如0.100%为1,96.560%为96560,0.400%为400;
查询数据说明:
抽中盲盒id为19的四种商品类型中概率(4.普通,96%,3稀有3.2%,2超稀有0.16%,1至尊0.08%),如果用户抽了9次都是“普通”的商品类型,第十次的话肯定中“稀有”商品类型。
二.盲盒商品表
用于查该盲盒id(eg:19)下的商品及其门槛相关信息。
字段说明:
(1) 权值(weight): 可以理解成商品被抽中的概率,好比共有2款商品A、B,若A的权值为30,B的权重也为70,那么抽中A的概率为0.3,B为0.7;
(2) 门槛次数(threshold): 是用户满足抽取一定次数后才能获得某个商品,举例,A商品设定门槛次数为10次,则用户抽取的前9次均不能抽到该商品。Eg:好比上图商品表数据中的商品id为1、2、3,都为”SSR至尊”类型的商品,门槛都是200次,也就是说如果你抽中了”SSR至尊”的商品类型,然后抽商品时抽中商品id为3的概率比较大(因为权重最高600),抽中商品后还得判断你总共的买盲盒id为19的次数之和是否大于等于200次,同时满足之前没有开盒成功”SSR至尊”的商品的话才能成功获取该商品。
三.用户盲盒门槛保底统计表
查询用户购买的盲盒id(eg:19)下各商品类型的门槛保底数。
字段说明:
(1)盲盒订单总计(order_count):该用户购买该盲盒id的次数和,用户每抽一次奖,那么该盲盒id下的所有盲盒商品类型(label字段)对应的orderCount都加1。
(2)门槛统计数(minimumCount):用户每抽一次奖,该盲盒id下的盲盒商品类型对应的minimumCount都会加1,商品表BlindBoxProduct中每个商品有个门槛数,好比某个”SSR至尊”商品类型下的商品的门槛次数threshold为200,那么当用户抽了200次后,如果抽了”SSR至尊”商品类型下商品后,minimumCount需要减去该商品门槛次数threshold (门槛重置)。
(3)是否首次保底(if_minimum):用于记录用户的首次保底是否已使用,1为已使用,每个用户仅限一次。
开始开盒
有了上面用户与盲盒相关的数据后:
一.抽取商品类型(至尊,稀有,超稀有,普通);
二.根据权值抽取(1)中商品类型下的某个商品;
三.判断用户是否达到抽中的商品的门槛?
(1)不满足,则重新走一二三步骤;
(2)满足,则走保底相关判断(好比稀有设置了保底10次,用户抽了9次还是普通,第十次一定是稀有),成功开盒;
其中一二步骤中的抽奖核心算法请查阅我的另一篇文章——盲盒开盒核心算法。
<END>
⭐️希望本文章对您有帮助,您的「 转发、点赞 」是我创作的无限动力。
扫描下方二维码关注微信公众号,您会收到更多优质文章推送。
以上是关于盲盒想中大奖?还不如去买彩票!!!——从程序的角度揭秘盲盒。的主要内容,如果未能解决你的问题,请参考以下文章
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B - 幸运大奖