一、运用处景

支付宝“集五福”已经成为了每年春节的必备活动,越来越多的人开始习气在互联网上参与各种活动。

尤其是在节假日期间,人们更加渴望有一种可以在线上参与的娱乐办法,通过游戏办法为客户带来更多的乐趣和悬念。
业务精心策划了节假日福卡抽奖活动(顺丰集福粽、中秋集月饼、年终回馈活动),客户通过做任务赢取福卡,集齐2种以上福卡后就有机会抽取折扣券、免单券和礼品。

php蒙特卡罗抽奖一种基于蒙特卡洛模仿的测算模子在集福卡运动中摸索研讨 Bootstrap

既要担保用户能通过抽奖获取折扣券匆匆使下单转化提升,同时也要掌握免单券、折扣券的中奖概率来掌握活动本钱。
因此在活动前期,测算好集齐N种卡的期望值是个迫不及待须要办理的问题。

二、办理方案

集齐1-N种福卡用户须要做多少次任务以及初始每种类型月饼概率设置是否能知足活动本钱掌握以及用户体验及下单转化目的?

在开始阶段,我们基于传统的排列组合统计方法在测算,由于每种福卡的中奖概率不同,算到集齐4种福卡已经非常麻烦,存在大量打算事情,更不用说后面集齐5种,6种不同概率福卡测算。

于是我们开始探索是否有新的方法用于这种场景测算。

1. 蒙特卡洛仿照概述

蒙特卡洛法也称统计仿照法、统计实验法,是把概率征象作为研究工具的数值仿照方法,是按抽样调查法求取统计值推定未知特性量的打算方法。

该方法通过布局一个和系统相似的概率模型,在打算机上进行随机试验来仿照系统的随机特性,故适用于对离散系统进行仿真实验,它是用抽样后的样本发生的频率来估计概率,以是它求得的是近似解,而不是精确解,随着样本数的增多,近似解将越靠近精确解。

2. 基于蒙特卡洛仿照的解题思路

蒙特卡洛算法的详细实现步骤如下:

定义问题:首先须要明确问题的数学模型和目标函数,以及待求解的变量或参数。
随机采样:天生随机样本,一样平常是均匀分布或正态分布的随机数,根据采样规则,将随机数映射到问题的定义域内,得到一组采样点。
仿照打算:将采样点代入目标函数中,得到目标函数的函数值,根据函数值的大小关系,统计知足条件的样本数目,得到目标函数在采样区域内的估计值。
统计剖析:根据大数定律和中央极限定理,利用采样得到的数据,打算问题的期望值、方差、置信区间等统计量,并根据结果进行进一步的剖析和推断。

常日蒙特卡罗方法可以大致分成两类:一种类型是所求解的问题本身具有内在的随机性,借助打算机的运算能力可以直接仿照这种随机的过程。
另一种类型是所求解问题可以转化为某种随机分布的特色数。

在本文中我们抽福卡概率测算问题属于前一种类型,即利用打算机天生大量随机数进行仿照打算。

三、运用案例

以中秋集月饼活动为例,用户可以通过逛游园会、做根本任务(如开通亲情卡、寄快递等)获取1-3个月饼,个中月饼的类型有五仁月饼、豆沙月饼、莲蓉月饼、水果月饼、鲜肉月饼、麻辣月饼。

集齐3种类型以上月饼即可参与抽奖。
为增加活动的意见意义性,各种类型的月饼会设置不同概率,特定类型月饼会设定为罕有品种,抽奖概率相对会小很多。

利用基于蒙特卡洛仿真仿照的方法,借用打算机的算力去求解所需的答案,求解仿照用户抽奖达到“集齐”的条件。
如下将以一次虚拟的“集月饼”活动为例,给出紧张的求解Python代码和运行结果。

从运行结果可以看出,一名用户集齐1-5种月饼须要的抽奖次数,同时我们也可以扩展到6种、7种、8种及以上。
快速测算集齐各种福卡所须要的次数,对业务同学设置活动任务数(通过做任务获取福卡)、评估活动本钱能起到不可或缺的辅导浸染。

本文由 @yyandbb415 原创发布于大家都是产品经理,未经容许,禁止转载

题图来自Unsplash,基于 CC0 协议

该文不雅观点仅代表作者本人,大家都是产品经理平台仅供应信息存储空间做事。