游戏开发论坛

 找回密码
 立即注册
搜索
查看: 14187|回复: 25

[讨论] 平均强化次数计算机模拟结果与理论结果数值的差异

[复制链接]

4

主题

20

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2009-11-9 13:12:00 | 显示全部楼层 |阅读模式
看来很多关于求平均强化次数的帖子,有很多大侠用计算机模拟结果,于是我给自己出了这么道题:
题目
装备+1成功率50%
装备+2成功率20%
强化失败均不降级。
问:把0的装备强化到+2,平均需要强化多少次?

理论解答:1/(50%*20%)=10次

计算机模拟解答:
Matlab模拟10万次:
x=zeros(100000,1);
for j=1:100000
    m=0; %装备等级
    n=0; %强化次数
    for i=1:100000
        s=rand(1,1);
        if m==0
          if s<0.5
             m=1;
             n=n+1;
          else
             n=n+1;
          end
        elseif m==1
            if s<0.2
               m=2;
            else
               n=n+1;
            end
        else
            break
        end
    end
    x(j,1)=n;
end
Averagecount=sum(x)/100000
--》》
结果1:
Averagecount =

    6.0182
--》》
结果2:
Averagecount =

    5.9980

--》》
结果3:
Averagecount =

    5.9971

--》》
结果4:
Averagecount =

    5.9867

--》》
结果5:
Averagecount =

    6.0002

--》》
结果6:
Averagecount =

    6.0074

--》》
结果7:
Averagecount =

    5.9985

最后模拟多次后结果可以认为,平均需要强化6次可以把0装备变为+2 .

我知道计算机的一些误差与随机数缺陷知识,但是为什么这样的一个问题用计算机会造成结果差异40%,小弟请教大侠们!

1

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-11-9 14:07:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

先确认下 两种哪种对。如果确认后者对,这说明 你的 “理论计算”是错的`~

理论计算应该是:

50%*20%=10% 这个概率其实是 一次性强化到+2成功的概率。
还有多次强化,才到+2的成功概率,为 1- 50%*80%= 60%。
所以 用 60%/ 10% =6次。

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-11-9 14:54:00 | 显示全部楼层

Re: 平均强化次数计算机模拟结果与理论结果数值的差异

弄错了,没看见强化不降级……
附件是强化降级的公式

13

主题

832

帖子

1875

积分

金牌会员

空想家

Rank: 6Rank: 6

积分
1875
发表于 2009-11-9 17:21:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

elseif m==1
  if s<0.2
    m=2;

这里为啥没有n = n + 1?

4

主题

20

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2009-11-9 18:52:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

3楼慧眼,不过加了n=n+1以后,结果平均值为7了,跟1、2楼的有10%的误差,跟一次性强化到+2有30%的误差。。

4

主题

20

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2009-11-9 18:58:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

如果我这样理论计算就得到7,不知是否正确:
1/50%+1/20%=2+5=7
这种做法,应该不是一次性从0+到2了,但是跟1、2楼的有出入啊!!!到底如何解释呢?希望有详细说法的大侠露露手~~~~~

15

主题

207

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2009-11-9 20:25:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

2楼的理解非常奇怪,也就是说n=6这个答案毫无道理,你的那个计算期望的方法是没有任何道理的

期望次数服从几何分布,按照几何分布的期望公式,楼上的结果是正确的

而且正如上面某楼指出的那样,楼主的程序里的代码是:
          if s<0.2
               m=2;
            else
               n=n+1;
而不是
          if s<0.2
               m=2;
               n=n+1;
            else
               n=n+1;
也就是说楼主没有把最后一次成功的强化的次数算上。

所以正确答案是楼主上楼的计算:1/50%+1/20%=2+5=7

主楼的理论计算和程序模拟都犯了低级错误,泪流满面..............

7

主题

1102

帖子

1178

积分

金牌会员

Rank: 6Rank: 6

积分
1178
发表于 2009-11-9 21:21:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

越来越无语了。

4

主题

16

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2009-11-9 21:42:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

我是这样想的,强化次数的期望为:50%*20%*(2+3*(50%+80%)+4*(50%*50%+50%*80%+80%*80%)+…+n*((50%)^(n-2)+(50%)^(n-3)*80%+…+50%*(80%)^(n-3)+(80%)^(n-3))).
式子的含义是这样的:
1.只强化了两次便成功了,这种情况发生的概率为50%*20%。
2.强化了三次最后成功,这种情况发生的概率为50%*20%*(50%+80%)(失败分两种情况,一种是在第一次失败,另一种是在第二次失败)。
3.强化了四次最后成功,这种情况发生的概率为50%*20%*(50%*50%+50%*80%+80%*80%)
……
n.强化了n次最后成功,这种情况发生的概率为50%*20%*((50%)^(n-2)+(50%)^(n-3)*80%+…+50%*(80%)^(n-3)+(80%)^(n-3))
把式子算出来就是强化的次数了。
哪个大虾算一算?

15

主题

207

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2009-11-9 21:51:00 | 显示全部楼层

Re:平均强化次数计算机模拟结果与理论结果数值的差异

楼上的不就是几何分布期望的推导公式么?

就是6楼的结果

放个传送门:
http://en.wikipedia.org/wiki/Geometric_distribution

都说数学对数值策划无用,但有时候熟悉数学还是防止走一些弯路的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-18 01:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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