数学建模社区-数学中国

标题: 求助一个概率题 [打印本页]

作者: jackcoobe    时间: 2010-6-22 21:02
标题: 求助一个概率题
用宝石给装备升级,每次消耗一颗,成功率1/3
装备初始1级,每成功升级一次加1级
升级失败变为1级

问:要把装备升级到10级,需要多少个宝石?

作者: linmatsas    时间: 2010-6-22 21:21
沙发……………………
好复杂…………
作者: 没爪子的猫    时间: 2010-6-22 22:45
好像游戏的问题呢
作者: foreveringxq    时间: 2010-6-22 23:46
不懂呀~~~~~~~~~~~~~~~
作者: jackcoobe    时间: 2010-6-23 09:00
貌似要用到递归啊
作者: suxiangshiwoha    时间: 2010-6-23 22:42
kao~~~又是那个打游戏打疯了~~~
作者: jackcoobe    时间: 2010-6-24 08:56
不是玩家考虑的问题,是数值策划考虑的问题。没人能做,是吧?
作者: liwenhui    时间: 2010-7-18 20:38
本帖最后由 liwenhui 于 2010-7-30 21:29 编辑

不知道如下的想法如何:
采用模特卡罗模拟,设宝石的级数用r表示,产生1个[0,3]的均匀分布的随机数x,如果这个随机数x<=1,则代表升级成功,对应的r增加1,如果x>1,则表示升级失败,对应的r回到原始的1.采用MATLAB软件编制程序如下:

   k1=1;
    k2=0;
    while k1<10;
          pd=unifrnd(0,3);
       if pd<=1;
          k1=k1+1;
          k2=k2+1;
       else
          k1=1;
          k2=k2+1;
       end
    end
    k2

其中输出的k2表示升级的次数。
由于成功与否是随机的,所以每次运行的结果不同。运行一次的结果:
k2 =
        5884

也就是说可能需要5884次。当然这个数值没有实际意义,只是一次升级尝试用了5884次,如果“运气好”,也许9次就能升到10级,所以,单独的一次模拟式没有实际意义的,最好的方法是重复以上过程若干次,然后得到K2的期望。在以上程序中添加一个for语句,假设重复100次,得如下:
    tot=0;
for m=1:100;
    k1=1;
    k2=0;
    while k1<10;
          pd=unifrnd(0,3);
       if pd<=1;
          k1=k1+1;
          k2=k2+1;
       else
          k1=1;
          k2=k2+1;
       end
    end
    tot=tot+k2;
end
epec=tot/100

输出的epec表示100次运行后k2的均值,拿它作为k2的期望估计。这段程序虽然短,但是我的电脑运行不出来,你可以在你的电脑试试,看期望次数是多少。想得到更加准确的值,可以采用加大重复次数的方式,比如重复1000次,10000次。

以上是我的一点想法。

这几天又思考了一番,发现升级的次数的期望是个无穷大量,即有可能你永远也无法升级到10级。

我觉得这个问题已经解决,版主可以把这个帖子标称“已解决”了。





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5