|
一、适用范围:- 洗练成功升级,失败掉1级,最低为1级;
- 洗练满级继续洗练不掉级不升级。
二、特点:
- 只需要按提示输入各级洗练成功概率,自动构建转移矩阵;
- 目前有两种测试方式,洗练次数测试和洗练目标测试,洗练次数测试时自动生成各级概率分布;
- 输入错误处理。
三、过程图:
四、MATLAB代码:
- clc
- clear
- Lv=input('输入屠龙刀的最高等级');
- p=zeros(Lv);
- p(1,2)=input('请输入屠龙刀由1级升到2级的概率');
- while p(1,2)>1||p(1,2)<0
- p(1,2)=input('请输入屠龙刀由1级升到2级的概率');
- end
- p(1,1)=1-p(1,2);
- for i=2:Lv-1
- inputname=['请输入屠龙刀由' num2str(i) '级升到' num2str(i+1) '级的概率'];
- p(i,i+1)=input(inputname);
- while p(i,i+1)>1||p(i,i+1)<0
- p(i,i+1)=input(inputname);
- end
- p(i,i-1)=1-p(i,i+1);
- end
- p(Lv,Lv)=1;
- lv0=input('输入屠龙刀初始等级');
- while lv0>Lv||lv0<1
- lv0=input('输入屠龙刀初始等级');
- end
- lv=zeros(1,Lv);
- lv(lv0)=1;
- X=1;
- while X>0
- X=input('选择进行的测试: 1 N次洗练测试;2 达到目标测试;0 结束测试');
- switch X
- case 1
- N=input('输入洗练次数');
- pN=lv*p^N;
- fprintf('%s\n','屠龙刀洗练N次后的各等级概率分布');
- fprintf('%f\r',pN);
- plot(pN);
- case 2
- lvN=input('输入目标等级');
- while lvN>Lv||lvN<1
- lvN=input('输入目标等级');
- end
- pn=input('输入达到目标的最少概率值');
- while pn>1
- pn=input('输入达到目标的最少概率值');
- end
- lv_n=lv;
- n=0;
- while sum(lv_n(lvN:Lv))<pn
- lv_n=lv_n*p;
- n=n+1;
- end
- fprintf('%s','达到洗练目标需要的次数为');
- fprintf('%d\r',n);
- case 0
- end
- end
复制代码
- clc
- clear
- Lv=input('输入屠龙刀的最高等级');
- p=zeros(Lv);
- p(1,2)=input('请输入屠龙刀由1级升到2级的概率');
- while p(1,2)>1||p(1,2)<0
- p(1,2)=input('请输入屠龙刀由1级升到2级的概率');
- end
- p(1,1)=1-p(1,2);
- for i=2:Lv-1
- inputname=['请输入屠龙刀由' num2str(i) '级升到' num2str(i+1) '级的概率'];
- p(i,i+1)=input(inputname);
- while p(i,i+1)>1||p(i,i+1)<0
- p(i,i+1)=input(inputname);
- end
- p(i,i-1)=1-p(i,i+1);
- end
- p(Lv,Lv)=1;
- lv0=input('输入屠龙刀初始等级');
- while lv0>Lv||lv0<1
- lv0=input('输入屠龙刀初始等级');
- end
- lv=zeros(1,Lv);
- lv(lv0)=1;
- X=1;
- while X>0
- X=input('选择进行的测试: 1 N次洗练测试;2 达到目标测试;3 生成达到目标的概率曲线;0 结束测试');
- switch X
- case 1
- N=input('输入洗练次数');
- while N<0
- N=input('输入洗练次数');
- end
- pN=lv*p^N;
- fprintf('%s\n','屠龙刀洗练N次后的各等级概率分布');
- fprintf('%f\r',pN);
- plot(pN);
- case 2
- lvN=input('输入目标等级');
- while lvN>Lv||lvN<1
- lvN=input('输入目标等级');
- end
- pn=input('输入达到目标的最少概率值');
- while pn>1
- pn=input('输入达到目标的最少概率值');
- end
- lv_n=lv;
- n=0;
- while sum(lv_n(lvN:Lv))<pn
- lv_n=lv_n*p;
- n=n+1;
- end
- fprintf('%s','达到洗练目标需要的次数为');
- fprintf('%d\r',n);
- case 3
- lvN=input('输入目标等级');
- while lvN>Lv||lvN<1
- lvN=input('输入目标等级');
- end
- N=input('输入洗练次数');
- while N<1
- N=input('输入洗练次数');
- end
- p_n=lv;
- pn=zeros(1,N);
- for i=1:N
- p_n=p_n*p;
- pn(i)=sum(p_n(lvN:Lv));
- end
- plot(pn)
- case 0
- end
- end
复制代码 补充case3
|
|