游戏开发论坛

 找回密码
 立即注册
搜索
楼主: hupoguodong

[讨论] 求解怪物装备掉率问题 800里加急

[复制链接]

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-2-1 14:57:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

20次是正确的

题目本身说的是一次只掉一个装备,那么实现方式必然是这样
a = ROLL(100)
如果 a < 10 掉落A
如果 10 < a < 15 掉落B

在这个模式下面,短板满足之前长板早就被满足了

而上面有人提到的
10次期望掉落A,然后剩余的9次+11次期望掉落B也是个误区,掉落A的这一次也应该被算到掉落B的样本里面

而 1/A + 1/B - 1/(A+B)是基于2次R点得出的结论
在这样的前提下这个结论是正确的
每一次都有10的几率掉落A且有5%的几率掉落B

0

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2012-4-9 15:09:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

1/(10%*(1-5%))+1/(5%*(1-10%))

0

主题

11

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2012-7-6 10:53:00 | 显示全部楼层

Re: 求解怪物装备掉率问题 800里加急

我看了各位的解答,总结一下。
方法一:可以用几何概率分布,和容斥原理。1/0.1+1/0.05-1/(0.1+0.05)=23.33333333333
方法二:由于数学期望具有线性性质,存在以下等式
x=1+0.05*10+0.1*20+0.85*x
解得
x=70/3
也就是
23.3333
方法三:2/3*(20/3+20)+1/3*(20/3+10)=23.3333

0

主题

36

帖子

93

积分

注册会员

Rank: 2

积分
93
发表于 2012-7-7 18:40:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

a=0;
b=0;
n=0;
for i=1:1000000
    k=rand();
    if a>0&b>0
        a=0;
        b=0;
        n=n+1;
    end
    if k<0.1
        a=a+1;
    elseif k<0.15&k>0.1
        b=b+1;
    end
end
fprintf('求算100W次,达到条件的次数为:%d\n',n)
结果:
求算100W次,达到条件的次数为:42847
求算100W次,达到条件的次数为:43011
求算100W次,达到条件的次数为:43070
求算100W次,达到条件的次数为:42608
求算100W次,达到条件的次数为:42656
求算100W次,达到条件的次数为:42727
求算100W次,达到条件的次数为:43184
求算100W次,达到条件的次数为:42836
求算100W次,达到条件的次数为:42720
求算100W次,达到条件的次数为:42863
求算100W次,达到条件的次数为:43075
求算100W次,达到条件的次数为:42941
求算100W次,达到条件的次数为:42761
求算100W次,达到条件的次数为:42993
求算100W次,达到条件的次数为:43089
求算100W次,达到条件的次数为:43068
求算100W次,达到条件的次数为:42709
求算100W次,达到条件的次数为:42820
求算100W次,达到条件的次数为:43221
求算100W次,达到条件的次数为:42963
求算100W次,达到条件的次数为:43269

1

主题

18

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2012-7-13 18:28:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

10+20-1/0.15=70/3  
楼上既然考虑交易,那么,全服杀了20只怪,出现了2A,1B,在一个玩家的手里的可能性是100%吗?如果不是,拥有其中一件的玩家想要凑齐的话,他肯定是需要付出代价去换到另一件B的,因此他还需要继续杀怪……20个怪穿齐是不对的。
再考虑全服,比如说,某一天,有2000只怪被100个不同的玩家杀死,那么全服出现了100个A和50个B,交易畅通理想的话也只够其中50个人穿齐,另外50个人需要继续杀怪。可见,20次无论如何都是错误的。

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-9-11 17:24:00 | 显示全部楼层

Re: 求解怪物装备掉率问题 800里加急

我算出来的公式是1/P1+1/P2-1/(P1+P2),P1,P2为A,B的掉落概率。

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-9-11 17:44:00 | 显示全部楼层

Re: 求解怪物装备掉率问题 800里加急

补充一下:
假设P(n)为其第n次集齐A和B的概率,单次获得A的概率为P1,单次获得B的概率为P2。
则有P(n)=[(1-P1)^(n-1)-(1-P1-P2)^(n-1)]*P1+[(1-P2)^(n-1)-(1-P1-P2)^(n-1)]*P2
        =(1-P1)^(n-1)*P1+(1-P2)^(n-1)*P2+(1-P1-P2)^(n-1)(P1+P2)
期望值E为当n趋近与正无穷时,数列n*P(n)求和的极限值
可以设P1(n)=(1-P1)^(n-1)*P1;P2(n)=(1-P2)^(n-1)*P2;P3(n)=(1-P1-P2)^(n-1)(P1+P2)。
则P(n)=P1(n)+P2(n)+P3(n)
则望值E为当n趋近与正无穷时,数列n*P1(n)+n*P2(n)+n*P3(n)求和的极限值
而n趋近与正无穷时,数列n*P1(n)求和的极限值为1/P1;数列n*P2(n)求和的极限值为1/P2;数列n*P3(n)求和的极限值为1/(P1+P2)。
所以E=1/P1+1/P2+1/(P1+P2)

1

主题

36

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
发表于 2012-9-17 14:14:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

都算得好复杂0 0
我来学习的

按照我单纯的逻辑以为

掉A 10%,掉B 5%
那么 有效掉落 15%
打10次掉1.5件,20次掉3件
3件中A=2B,刚好两件A,一件B

这样算,我2B了吗?哈哈

0

主题

3

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2012-12-4 20:35:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

挺热闹的,看到这题让我有激情拿起多年没用的C语言。。
写了段程序校验了下,
10%的概率掉A,5%的概率掉B,A与B不能同时掉。
重复运算100万次,算出来的结果接近23.33。验证了23.33是正解。。~~

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>

#define times1 300
#define times2 100000

int a,b,i,k,j,n,l;
float m=0,p=0;

void main()
{
for(j=1;j<times2;j++)
{       
    n=0;a=0;b=0;
        for(i=1;i<times1;i++)
        {
        k=rand()%100;n++;
                if(k<10)
                {a++;}
                else if(k<15)
                {b++;}
                if(a>=1&&b>=1)
                        break;
        }
m=m+n;l++;
p=m/l;
printf("%d n=%d p=%f\n",l,n,p);
if ((j%1000)==10) getch();
}
}

20

主题

903

帖子

977

积分

高级会员

Rank: 4

积分
977
QQ
发表于 2012-12-5 11:05:00 | 显示全部楼层

Re:求解怪物装备掉率问题 800里加急

ls你的程序写的不够简洁。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-28 12:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表