看到一个题目,网游装备强化到5级平均需要多少次?要知道装备强化如果失败是会降1级的.如果不是降一级而是直接导致装备破坏,那成功概率就不一样了.


自己写的程序如下:

import java.util.Random;
/*这是一个用来测试装备升级成功率的程序
装备从0级强化到5级,不同等级时成功概率依次为:80%,60%,40%,20%,10%.
0级强化到1级成功率有80%,失败仍为0级,1级到2级成功率60%,失败降1级,后面都是成功升1级,失败降1级,程序运行从0级到5级一共强化了多少次(包括失败次数).
重复10000次从0级到5级的强化测试,算出平均升到5级需要多少次强化.
用到了java.util.Math.Random方法.
*/
class Test{
    public static void main(String args[]){
        int ntimes = 0;
        int presentlevel = 0;
        int prob[] = {80,60,40,20,10};
        Random rnd = new Random();
        int irnd;
        int total = 0;
        int avg = 0;
           
        for(int i = 0; i < 10000;i++){
            do{
                irnd = rnd.nextInt(100);
                if(irnd <= prob[presentlevel]){
                    presentlevel++;
                    //System.out.println("irnd is "+irnd+"  PL is "+presentlevel);
                }else{
                    if(presentlevel > 0) presentlevel--;
                    //System.out.println("rnd is "+irnd+"  PL is "+presentlevel);
                }
                ntimes++;
            }while(presentlevel < 5);
            System.out.println("Tried " + ntimes + "to get level 5.");//这遍用了多少强化次数
            total = total + ntimes;
            ntimes = 0;  //强化次数和等级回0再测
            presentlevel = 0;
        }
        avg =total / 10000;
        System.out.println("total is "+total+" avg is "+avg);
        //输出总次数和平均数
    } 
           
}

这样算出来平均是260次左右,升级不成功直接破坏装备的升级法560左右.