我们是如何用科学的方法尽量保证商场抽奖玉石退货方法的公平性的

百万抽奖分析报告 · 抽奖是公平的吗
TA的更多文章
百万抽奖分析报告 · 抽奖是公平的吗
这是一篇针对欧皇的一手数据分析,全方位解密欧洲人的血统之谜。注:合法性论证请看文章尾部声明。正文约2000字,预计阅读时间 13 分钟0x00.&引言俗话说得好,杀不尽的非洲狗,流不完的欧洲泪。一直以来,欧洲人和非洲人的战争就从未停歇过。&&&&&&&&根据 欧气守恒定律&:“欧气不会凭空出现,也不会凭空消失,只能从一个人传递给另一个人,而在传递的过程中 欧气总量不变”。&&&&&&&&因此,本文章基于这个原理,将欧气富集的欧洲人集中起来进行分析,以使能促进欧气的流动,将欧气从欧洲人身上传递给围观群众。&&&&&&&&另外,还根据 欧气&这一“气体”的自由扩散原理,&促使欧气产生顺浓度梯度扩散,从欧气富集的欧洲人身上扩散到欧气稀疏的非洲人身上。原理说明见下图:欧洲人转化图·灵魂画手&&&&&&&&所以,为了使浓度梯度差尽可能扩大,请给这篇文章 点赞,收藏,分享给你的朋友&!0x01. 数据准备(看不懂的可跳过)注:为了照顾非专业人士,我尽可能对专业术语进行转译。&&&&&&&&本文的数据来源于 200w 抽奖,总中奖名单为 13,000 人,其中,一等奖1,000人,二等奖2,000人,三等奖10,000人。中奖名单传送门见 文末。&&&&&&&&名单的内容全部在网页上,我将其复制到 notepad++ 并通过正则替换转化为 json数组以便编程使用。&&&&&&&&名单的内容为中奖用户 uid,每个 uid 唯一对应一个用户,通过 uid 获取用户资料的方式是访问用户的空间,其地址为 : https://space.bilibili.com/[uid]/ ,可以直接看到的资料内容包括:用户昵称、签名、头像、主站等级、是否大会员、关注数、粉丝数、阅读数、收藏视频数。本次数据采集也只使用了这些数据。合法性论证见 文末。&&&&&&&&由于数据规模较大,不方便手动采集,因此使用编写爬虫的方式实现自动采集。为什么一天以后才发这篇专栏?答:尽管没有对爬虫进行禁止,但是B站官方对数据抓取速度有一定的限定。&&&&&&&&在爬虫将数据获取完毕之后,所有数据将被转换成&Excel 图表以便分析。0x02. 欧洲人和土豪的血缘关系分析注:由于Power BI图标的默认排序为汉语拼音首字母,因此部分图表的横轴顺序为 一 、三、二,请注意在这个部分,干货就要来了。&&&&&&&&我们根据三个等级的奖项,分别汇总统计各个奖项中大会员的分布情况,看看欧洲人是否都躲藏在土豪人群中。各奖项大会员分布& & &&&&由上图可得,大会员人数与普通用户人数基本持平,在各奖项中的分布也非常均匀,说明抽奖过程足够随机,没有针对付费用户或者免费用户。一个有趣的发现是,年费大会员的人数是普通大会员的数倍呦。0x03. 欧洲人和肝星人的血缘关系分析&&&&&&&&如果经常中奖的欧洲人并不是因为和土豪血统相近,那么还会是什么原因呢?这一部分将会分析欧洲人主站等级的情况。等级分布情况&&&&&&&&三个数轴都十分接近,说明各奖项分布依然足够随机。这次等级为4的用户占据了最大的比重,等级为四级或五级的用户比重达到了80%以上,可以说基本满足活跃用户的分布情况,(由于开奖时间只有48小时,因此不活跃的用户大概率看不到这个抽奖动态)。&&&&&&&&考虑到使用 B博 动态的人群,我们可以认为其等级分布可以证明抽奖结果是完全随机的。我们没有看到Lv5和Lv6的大比重,因此可以认为欧洲人与肝星人并无关联,只是一部分肝星人热衷于转发抽奖。0x04. 欧洲人和UP主的关系?&&&&&&&&是吧,你们是不是发现,根本没有UP主发动态说自己中奖了!&&&&&&&&如果我们把所有粉丝数大于1000的称为UP主,所有粉丝数大于10000的称为大UP主,那么,我们将得到如下分布:&&&&&&&&(是的,没有图了,因为表达不出来 这么小的数字,你们想象一下。& &&&&&&&&&在整个 13000 人的中奖名单中,UP主&&&&&&&&共有 101 个,占& 0.77%&&&&&&&&在整个 13000 人的中奖名单中,大UP主&&&&共有 17&&&&个,占 0.13%&&&&& & 分布情况依然是各奖项均匀分布,占比接近。&&&&&&&&怎么样,是不是觉得非常舒服了??不好意思,本人就是那个&0.77%&的幸运儿。0x05. 听说有小号刷奖?&&&&&&&&是的,很多人有这个怀疑。在我拿到所有数据之前,我也认为会有一大堆小号掏空奖池。&&&&&&&&在开始分析之前,我们首先要拟定一个标准,来确定什么是小号。我们目前掌握的数据指标有:粉丝数、关注数、头像、投稿被阅读量、收藏的视频数。&&&&&&&&如果我们认为正常用户都会修改自己的头像,那么无头像的用户总数为 740 ,当然,我们为了精确范围,可以认为正常用户都会修改自己的签名,然后我们还可以假定小号不会充值大会员,并且我们可以排除掉有投稿的那些用户,那么剩余的“显然小号”个数为 440 ,当然,一个小号可能曾经被使用过,所以它的收藏数、关注数等指标不太可信,除此之外,我们还有一个指标:粉丝数,那么最终产生的数字 是 354 个。&&&&&&&&这354个账号满足如下条件:无头像无签名非会员无粉丝无投稿&&&&&&&&占获奖名单总数的 2.7% 。根据之前动态的转发结果,转发量按 100w 预估的话(实际不止,另外我们需要额外扣除同一个账号多次转发的情况),那么参与转发动态的小号有 3w&左右。&&&&&&&&因此,这个问题,我可以肯定地回答:是的,有小号刷奖,且小号数量庞大。这些小号将非洲人获奖难度提升了3%。&&&&&&&&这个预估的小号数量和原动态的转发列表里小号的出现频率基本相似,因此也反证了本次抽奖是完全随机的。0x06. 总结&&&&&&&&经过对用户公开数据的筛选和分析,我可以非常负责任的说,本次百万抽奖从概率分布上讲,是足够随机、公正的。&&&&&&&&没有黑幕,也没有全让付费用户中奖,甚至小号都能中奖。(而非洲人不能)&&&&&&&&&&&&&&&&从这次的结果分析来看,如果经过我们的推断,抽奖是完全公平的,那么我们可以根据中奖名单中的概率反向推断出,目前B站活跃用户中,有50%都购买了大会员,其中有90%左右购买了年费大会员,这一结论非常惊人。&&&&&&&&再按照一百万的转发量来推测,其中B站年费会员大概有45w,按照半价大会员计算,这一部分用户累计创造年费会员充值金额至少为 4500w (乐观预测的话 总体可至6000w以上),?与B站一季度财报收益基本吻合。&&&&&&&&充分必要性均得证,因此抽奖过程公平、随机。0x07.后记&&&&&&&&这篇文章纯粹是出于对本次百万大奖的获奖名单和抽奖机制的好奇而产生的,本次项目的数据将会完全公开(在经过处理之后)。&&&&&&&&数据地址 : &, 个人签名部分(请勿用于恶意用途)。& & &&&&赶紧给这篇文章&点赞,收藏,分享给你的朋友&!&&&&&&&&为什么不讨论一下中奖用户里面 FGO 玩家的数量。答:没有意义,其中一个原因是 玩家的游戏倾向属于隐私,额外抓取的一部分的结果显示没有特别关联,比如我,我就不是一个FGO玩家,从数据上来说,这次确实是面向B站所有用户的抽奖。数据来源:睿总200w抽奖(),。合法性:根据(space二级域名下未提供robots文件),本次抓取的 space.bilibili.com/*/ 路径合法,不处于爬虫禁止名单。规范性:为了保护用户隐私,本次数据不会使用涉及到用户隐私的部分(如 生日/性别/注册时间)。原创性:文章内图片均为本人制作,文章内容完全原创。专栏头图来自 pixabay.com,以 CC0 协议共享,无需署名。转载请注明 作者、出处、来源。抽奖概率-三种算法 - 挽星 - 博客园
一、逢&几&中奖
逢&几&中奖,即通过预估抽奖人数和奖品数来判断,&几&=(抽奖人数/奖品数)*N。这是一种最简单抽奖算法,适合抽奖人数众多,而且互相无联系的情况。如今大为流行的微博转发得奖就常常使用这种算法,即根据转发次数来决定奖品归属,透明而且具有激励性。
当然这个&几&也不单只次数,还可能是时间,逢某个时间点就可以抽中,不过这种方案可能产生无人中奖和很多人中奖的情况,时间点的安排很关键!这个时间点一旦公布出去,那就是秒杀,霍霍。。
逢&几&中奖有很多弊端,但是非常简单,很容易实现,被很多抽奖活动所采用,有些会公布抽奖规则,激励抽奖,有些则不会公布,其实后台运行的可能也是这个算法,简单高效又不失公平。在信息不透明的情况下,鬼知道你是第几个抽奖的,哈哈。。
二、概率抽奖
所谓概率抽奖是最容易想到的抽奖算法了,这个概率可以是一成不变的,也可以是一直在变化调整的,最难的是采用多大的概率,何种情况下采用何种概率。这个也没有什么通用的方案,不同的应用场景,所用的概率算法不同。下面介绍一种算法,根据奖品的过期日期来计算它当前时间的中奖率,当时间逐渐接近奖品过期时间时,中奖概率会逐渐发生变化,如果设为1表示线性衰减,2为平方衰减,以此类推。
importjava.util.D
importjava.util.R
publicclass LotteryTool {
private double
private double
private LotteryTool(double probability, long expireTime, int reduce){
this.factor = (double) System.currentTimeMillis() / expireT
this.probability = probability * Math.pow(factor, reduce);
this.rand = new Random(System.currentTimeMillis());
public static LotteryTool getInstance(double probability, longexpireTime,
int reduce) {
return new LotteryTool(probability, expireTime, reduce);
public boolean isLucky(long expected) {
long token = generateLong();
expected = expected % (int) (1 / probability);
if (expected == token) {
return true;
return false;
三、依赖不可控的物理随机数&
什么意思呢,先看个图,看完你就知道了
明白了吧,呵呵,这就是现如今灰常流行的一种抽奖算法,绝对公平、绝对透明、绝对木有暗箱(除非偷偷给你换了抽奖号码)!但是这种方法唯一的缺点是无法实时抽奖,只能事后抽奖。也就是只能拿个抽奖号等着上帝的眷顾,阿门。。。
例如游戏中打败一个boss,会掉落下面其中一个物品,而每个物品都有一定概率: 1. 靴子 20% 2. 披风 25% 3. 饰品 10% 4. 双手剑 5% 5. 金币袋 40% 现在的问题就是如何根据概率掉落一个物品给玩家。
一. 一般算法:生成一个列表,分成几个区间,例如列表长度100,1-20是靴子的区间,21-45是披风的区间等,然后随机从100取出一个数,看落在哪个区间。算法时间复杂度:预处理O(MN),随机数生成O(1),空间复杂度O(MN),其中N代表物品种类,M则由最低概率决定。
二、离散算法:也就是上面的改进,竟然1-20都是靴子,21-45都是披风,那抽象成小于等于20的是靴子,大于20且小于等于45是披风,就变成几个点[20,45,55,60,100],然后也是从1到99随机取一个数R,按顺序在这些点进行比较,知道找到第一个比R大的数的下标,比一般算法减少占用空间,还可以采用二分法找出R,这样,预处理O(N),随机数生成O(logN),空间复杂度O(N)。 请点击查看详细:
三、Alias Method Alias Method就不太好理解,实现很巧妙,推荐先看看这篇文章: 大致意思:把N种可能性拼装成一个方形(整体),分成N列,每列高度为1且最多两种可能性,可能性抽象为某种颜色,即每列最多有两种颜色,且第n列中必有第n种可能性,这里将第n种可能性称为原色。 想象抛出一个硬币,会落在其中一列,并且是落在列上的一种颜色。这样就得到两个数组:一个记录落在原色的概率是多少,记为Prob数组,另一个记录列上非原色的颜色名称,记为Alias数组,若该列只有原色则记为null。
之前的例子,为了便于演示换成分数 1. 靴子 20% -& 1/4 2. 披风 25% -& 1/5 3. 饰品 10% -& 1/10 4. 双手剑 5% -& 1/20 5. 金币袋 40% -& 2/5 然后每个都乘以5(使每列高度为1),再拼凑成方形 拼凑原则:每次都从大于等于1的方块分出一小块,与小于1的方块合成高度为1
由上图方形可得到两个数组: Prob: [3/4, 1/4, 1/2, 1/4, 1] Alias: [4, 4, 0, 1, null] (记录非原色的下标)
之后就根据Prob和Alias获取其中一个物品 随机产生一列C,再随机产生一个数R,通过与Prob[C]比较,R较大则返回C,反之返回Alias[C]。
Alias Method 复杂度:预处理O(NlogN),随机数生成O(1),空间复杂度O(2N)如何让更多人相信一个抽奖活动的公平性?急需? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。1被浏览103分享邀请回答暂时还没有回答,开始写第一个回答玄幻奇幻小说:《会抽奖的科学家》05-1502-1602-1602-1602-1602-1602-1602-1602-1602-16最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01}

我要回帖

更多关于 会抽奖的科学家txt 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信