关于游戏抽奖抽奖中的概率问题题

扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
关于概率分布的问题假定有抽奖游戏,抽奖者,最多抽十次,中奖则停止抽奖.抽奖者中奖率是10%,若不中奖,第二次是20%,直至第十次必然中奖.在以上规则下进行足够多的实验,那么在实验样本中,第N次方中奖的中奖者是如何分布的,如何计算呢?
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
第1次中奖,概率0.1第2次才中奖,即第一次不中,第2次中,概率0.9*0.2第3次才中奖,即前两次不中,第3次中,概率0.9*0.8*0.3第4次才中奖,即前3次不中,第4次中,概率0.9*0.8*0.7*0.4类似地第5次才中奖概率0.9*0.8*0.7*0.6*0.5第6次才中奖概率0.9*0.8*0.7*0.6*0.5*0.6第7次才中奖概率0.9*0.8*0.7*0.6*0.5*0.4*0.7第8次才中奖概率0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.8第9次才中奖概率0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.2*0.9第10次才中奖概率0.9*0.8*0.7*0.6*0.5*0.4*0.3*0.2*0.1*1
为您推荐:
其他类似问题
扫描下载二维码更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
举报视频:
举报原因(必填):
请说明举报原因(300字以内):
请输入您的反馈
举报理由需要输入300字以内
感谢您的反馈~
请勿重复举报~
请刷新重试~
收藏成功,可进入查看所有收藏列表
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接//71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
王者荣耀公布抽奖概率 王者水晶概率惨不忍睹
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
Copyright (C) 2018
All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制关于抽奖命中概率这个问题,是游戏厂商最不愿意谈到的问题关于抽奖命中概率这个问题,是游戏厂商最不愿意谈到的问题怀游志l百家号关于抽奖射中概率这个问题,是游戏厂商最不肯意谈到的问题。挖了坑固然不肯意让人晓得这个坑到底有多深!可是比来应文化部最新政策《关于标准搜集游戏运营加强事中事后监管工作的通知》的要求,必需将游戏中相干抽奖的几率公示,于是乎这层奥秘的面纱才终于活着人面前揭落!王者荣耀中,最首要的四个抽抽抽!①:抽铭文5级铭文射中率仅有3.6%!不晓得各类形而上学在这惨然的射中率面前还有效么?②:荣耀水晶这可是土豪的玩具,武则天的独一来历!热点好汉诸葛亮+关羽!小乔的传说皮肤!水晶的产出率只需0.8%!这一套拿下要若干好多钱。。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。怀游志l百家号最近更新:简介:小时候的经典给你带来你不知道的的游戏剧情作者最新文章相关文章毕业论文·抽奖活动中的概率问题_中华文本库
第1页/共12页
上饶师范学院 毕业论文
论文题目 :
抽奖活动中的概率问题
学生姓名:郑 翔
学 号: 系 别:数学与计算机科学学院 专 业:数学与应用数学 班 级:12数(1) 指导教师:王茶香
二零一六年 五月
第1页/共12页
寻找更多 ""后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
我要游戏策划
查看: 19814|回复: 16
抽卡艺术:深度分析游戏中随机概率
游戏类型:手游游戏/平板游戏&网页游戏&  设计类型:【数值/经济系统/付费】&
本帖最后由 小篱 于
14:46 编辑
u.jpg (49.69 KB, 下载次数: 22)
09:20 上传
  GameRes游资网授权发布 文/ i
  这段时间公司开发的游戏上线测试,许多玩家在抽卡时抱怨脸黑,很难抽到所需要的卡牌,而又有一部分玩家反应运气好能连着抽到紫卡,检查了下随机相关逻辑代码,并没有找出问题所在,玩家运气好与坏只是觉得真有可能是概率原因。
  测试开服了几天之后,需要开放某个限时抽卡活动,在内部测试时,我们发现玩家反应的问题在限时抽卡中格外明显,尤其是其中最主要的一张稀有卡牌,猜测因为限时抽卡库配置的种类较少,然后就拿该活动来检查了下我们游戏随机机制问题。
  5%概率?20次出现一次?
  大部分游戏策划使用权值来配置随机概率,因为权值有个好处就是可以在增加随机物品时,可以不对之前的配置进行更改,比如:白卡 30,蓝卡 10,紫卡 10,转为概率即是:白卡 60%,蓝卡 20%,紫卡 20%。
  而上述限时抽卡的例子中,我们的权值配置是5和95,模拟50000次随机(使用系统随机函数,如C的rand函数,Python的random库)得到如下结果:
1.jpg (97.17 KB, 下载次数: 27)
09:20 上传
  上图绘制的是权值为5的卡牌的随机状态,红色的图是分布图,X轴是出现的次数,Y轴是相同卡牌再次出现的间隔。绿色的图是分布概率图,X轴是间隔数,Y轴是概率。按策划的想法,5%概率应该等同于20次出现一次,那上图很明显并不满足20次出现一次出现规则,实际间隔从近到远呈下坡形状分布,就是说相邻的概率最大,间隔最大超过160,这与玩家所吐槽的抽卡体验是一致的。但50000次随机总共出现了2508次,从统计的意义上来说又是符合5%概率的。所以这个问题,究其原因就是所谓的概率是统计意义上的还是分布意义上的问题。
  最原始的实现
  我用列表里取元素的方式来模拟20次出现一次,为了方便比较异同,直接随机的方式我也贴上相关代码。
pool = [0]*5 + [1]*95
result = [random.choice(a) for i in xrange(N)]复制代码
  上面是直接随机的方式,只保证5%概率。
pool = []
result = []
for i in xrange(N):
if not pool:
pool = [0]*1 + [1]*19
random.shuffle(pool)
result.append(pool[-1])
del pool[-1]复制代码
  上面是打乱列表,然后依次取元素的方式,保证20次出现一次,而5%概率则是隐含在内的,生成效果如下图。
rnd2.png (88.51 KB, 下载次数: 25)
16:36 上传
  该图明显跟第一个实现的图不一样,上图表明了间隔基本上是落在[0, 40]的区间内,并且均匀分布在20那条蓝色对称线附近。这个才是最终想要的随机的效果。红色的线是正态分布曲线,是不是很相似?后面我会讲到。
  眼尖的会发现在第一个实现中我用的pool是[0]*5 + [1]*95,而第二个实现中我用的是[0]*1 + [1]*19。
  这里20次出现一次并不等同于100次出现五次,也是从分布的意义上来说的,100次出现五次是存在5次连续出现的可能。
  针对策划的配置,我们需要进行预处理,怎么处理?GCD啊~,5和95的最大公约数是5,所以在第二个实现的代码中我直接使用了1和19。
  但这里有个问题,一般策划配置的随机库中肯定有多个物品。权值如果配置的比较随意的话,很可能就导致GCD为1,这样想要实现XX次出现一次就不可行了。比如刚才的权值配置5和95,再加一个权值为11的话,就只能实现111次出现5次。
  所以这两种依赖列表的随机方式并不适用,一是需要维护的列表内存会比较大,二是对策划配置方式有过多约束。
  更通用更优美的实现
  20次出现一次是以20为标准周期,当然不能每次都是间隔20出现,这样就太假了,根本没有随机感受可言,为了模拟随机并可以控制一定的出现频率,我选择正态分布来进行伪随机分布生成,原因是分布会更自然一些。
5.jpg (22.29 KB, 下载次数: 24)
09:20 上传
  关于正态分布这里就不详细描述了,只需关心分布的两个参数即可,位置参数为μ、尺度参数为σ。根据正态分布,两个标准差之内的比率合起来为95%;三个标准差之内的比率合起来为99%。
6.jpg (39.09 KB, 下载次数: 21)
09:20 上传
  用上面的例子来定下参数,μ=20,σ=20/3,这样每次按正态分布随机,就能得到一个理想的随机分布和概率区间。
  C语言标准函数库中只有rand,如何生成符合正态分布的随机数可以参见WiKi上的介绍。这里我直接使用Python中random库中的normalvariate函数,当然gauss函数也是一样的,官方文档上说gauss函数会快些,StackOverFlow上说gauss是非线程安全函数,所以会快。我自己简单测试了下,在单线程情况下,gauss是会快些,但只是快了一点点而已。
  首先,我直接生成权值为5的卡牌的间隔,检验下正态分布的随机效果。
NN = int(N*0.05)
mu, sigma = 20, 20/3.
delta = [int(random.normalvariate(mu, sigma)) for i in xrange(NN)]复制代码
7.jpg (80.22 KB, 下载次数: 21)
09:20 上传
  这图是不是比第二个实现的图更好看一些,分布也更平滑一些呢。OK,接下来就是替换旧的随机算法了。
  细节和优化
  刚才说了随机库中会有很多物品,都需要按照各自的权值随机,并各自出现频率符合正态分布。下面我们来说说细节。
wtp = [1.*x/sum(wt) for x in wt]
result = []
p = [random.normalvariate(1./x, 1./x/3.) for x in wtp]
for i in xrange(N):
minp = 1.e9
minj = -1
for j, pp in enumerate(p):
if pp & minp:
minp = pp
minj = j
result.append(minj)
for j, pp in enumerate(p):
p[j] -= minp
p[minj] = random.normalvariate(1./wtp[minj], 1./wtp[minj]/3.)复制代码
  这里我使用了统一的随机种子,随机测试了500万次后,所得的结果与多个随机种子差别不大。
  简单解释下代码:初始化对所有物品按权值进行正态分布随机,每次取位置最小值的物品(也就是最先出现的),然后其它物品均减去该值,被取出的物品再单独进行一次正态分布随机,再次循环判断位置最小值。
  这里,每次都需要对所有物品进行求最小值和减法,都是需要遍历的运算,我们可以有如下优化。
  例如:(1,3,4) -& 取1减1, (0,2,3) -& 随机1, (1,2,3),其实我们只是为了保持各物品之间位置的相对顺序即可,将对其它物品的减法变成对自己的加法,操作量级立马从O(N)缩为O(1) 。
  如上面的例子:(1,3,4) -& 取1, (0,3,4) -& 随机1加1, (2,3,4),这样的操作不会改变物品序列的正确性。
  熟悉最小堆的朋友,将查找最小值优化到O(1)应该也没啥问题吧。
wtp = [1.*x/sum(wt) for x in wt]
result = []
p = [(random[i].normalvariate(1./x, 1./x/3.), i) for x in wtp]
heapq.heapify(p)
for i in xrange(N):
minp, minj = heapq.heappop(p)
result.append(minj)
heapq.heappush(p, (random[minj].normalvariate(1./wtp[minj], 1./wtp[minj]/3.)复制代码
  测试结果
  问题分析和算法实现就到这了,替换进我的游戏里看看什么效果,我已经迫不及待了。
  物品测试权值序列[10, 30, 50, 110, 150, 200, 250, 500],随机测试500万次。
10.jpg (52.88 KB, 下载次数: 25)
09:21 上传
  第一个随机实现
  第一个实现是只符合统计要求,不符合分布要求。
11.jpg (56.88 KB, 下载次数: 21)
09:21 上传
  第二个随机实现
  第二个实现中对权值序列进行了GCD,可以看到只有绿色是符合分布要求的,而蓝色和青色退化成第一种实现。
12.jpg (51.3 KB, 下载次数: 24)
09:21 上传
  基于正态分布的随机实现
  完美!
  当然,实现20次出现一次这样的分布伪随机还有其它方法,比如保存一个计数器,每随机一次就加到计数器上,当计数器的值大于或等于1,即必然出现。但这种实现需要计数器,每个玩家每个随机库每个物品都需要这么一个计数器字段,空间上实在太大了。
  关于随机种子,除非是全服竞争类资源,不然最好每个玩家有各自的随机种子,否则会造成体验上的误差,比如抽卡、关卡掉落等这些只针对玩家自身的系统随机。服从正态分布的全局随机序列,不同玩家任意取走序列中一段或者一些值,就可能导致对于每个玩家而言,各自取出的随机序列不再服从正态分布。
  我只能感叹Python的库太强大了,matplotlib绘制出来的图形也挺漂亮的,感兴趣的童鞋可以查阅用Python做科学計算。
  相关阅读:
拜大神= =这技术党屌爆了,伪随机是肯定要做的,但看不懂啊,太多术语了,吾等平民策划求平民解释
大概看明白了,这样的效果实际和那个每随机一次增加计数器的效果相当,只是计算起来比那个方便一些。
计数器如果要保证概率相对准确,需要反向推算计数上限来接近实际概率,正态分布的算法只需要按照实际概率推次数即可。
另外计数器的算法通常只能在一个随机系统中选择一些比较重要的物品使用,而正太分布可以让每种物品都大致接近它的实际概率
本帖最后由
15:25 编辑
看过,这一套也开发利用过,然而坑并没有想象中的好填
好棒啊 非常仔细
太厉害了。。。表示执行策划只能看得懂一点点= =
随机1加1, (2,3,4)
代码里没有看到加1的操作?
我已经在想怎么说服程序员帮我写个堆了
恩,这样“运气差”的人确实少了很多。但是,“运气好”的人也少了很多啊。从某种意义上讲,有种变得没意思了的感觉。}

我要回帖

更多关于 转盘抽奖的概率问题 的文章

更多推荐

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

点击添加站长微信