菜单
2020-4-13 00:51 4384 11 1 0 1

关于SR5需要多少改造石(含SR喂尔格):非酋鉴定贴

登陆查看完整内容

您需要 登录 才可以下载或查看,没有帐号?注册




前言:

A了十几年的老玩家回归,托TC挂机送的幸运改造石(约等于第五改必定成功)的福,弄了一把S5的原罪和一把R5的皇家弩来玩。两个都用了10个以下的改造石就成功上了5,开心之余,很想知道自己是非还是欧,就想着做了这么一期:SR改造究竟需要多少改造石,的帖子。

PS:SR6,7我就不算了。因为好像有什么防爆的改造石还是保护水之类的?刚回归不懂。但是使用这个方法当然也可以很轻松算SR6,7。



这里直接公布答案:

a. 在有幸运改造石的情况下,需要约18.3个改造石才能上SR5(包含1枚幸运改造石),需要改造费61万。

b. 没有幸运改造石的情况下,需要约29.7个改造石才能上SR5,需要改造费约104万。

c. 以一块蓝改1.3万,一块红改12万来算。幸运蓝改省了58万,幸运红改省了180万。显然幸运蓝改只要超过59.3万,幸运红改只要超过192万,别买,亏本买卖。
d. 如果要喂尔格SR装备,推荐S5。

PS: 这里提供的是期望值(看来我SR还挺欧的XD)。有志于掌握这个方法用在其他地方的,可以继续往下看计算实践。







计算方法:

这里介绍一个你可以用来计算几乎所有游戏概率的工具:吸收马尔科夫链。这里是该方法的资料(CSDN:https://blog.csdn.net/evecho/article/details/80656381)。有别于常见的案例,SR因为其失败退一的特性,让习惯于用古典方法计算的人很难去计算SR改造的期望值,吸收马尔科夫链正是为了这类问题而生。(PS:不知道有没有人玩过阴阳师,里面有个活动是前三张SSR\SP有2.5倍几率抽中,这个方法我最早用来计算抽到SP需要多少抽。)







计算过程:

a. 关于改造次数的计算

这个方法的计算流程大概为:画状态图模型→写出其标准状态转移矩阵→计算从某个状态出发到被吸收前到达各个状态的次数→相加得到总次数。



1. 画状态图模型




这图有6个节点,分别为S0~S5。这张图下方均表示为成功改造(转移到下一个节点),上方均表示为失败改造(退回上一个节点),最后是目标SR5(吸收态,一个100%回到自己节点的特殊节点)。显然假如失败不掉级,失败就是回到自身,假如失败掉级就是失败退一个节点。同时,确定好每个节点的指出去的方向总和概率是100%(不要求指向该节点的综合概率为100%,聪明的同学们应该能想到是为什么)。



2. 写标准状态转移矩阵p

0          1          0          0          0          0

0.5       0          0.5       0          0          0

0          0.5       0          0.5       0          0

0          0          0.55     0          0.45     0

0          0          0          0.55     0          0.45

0          0          0          0          0          1



3.  计算平均转移次数

Q矩阵为:

0          1          0          0          0

0.5       0          0.5       0          0

0          0.5       0          0.5       0

0          0          0.55     0          0.45

0          0          0          0.55     0



平均转移次数矩阵N=(I-Q)^-1:

5.71604938271605      9.43209876543210      7.43209876543210      4.93827160493827      2.22222222222222

4.71604938271605      9.43209876543210      7.43209876543210      4.93827160493827      2.22222222222222

3.71604938271605      7.43209876543210      7.43209876543210      4.93827160493827      2.22222222222222

2.71604938271605      5.43209876543210      5.43209876543210      4.93827160493827      2.22222222222222

1.49382716049383      2.98765432098765      2.98765432098765      2.71604938271605      2.22222222222222



我们关心的是从第一状态(无SR改造)到吸收态(SR5)的次数,即红色第一行,他们的总和约为29.7次,意思是我们需要29.7次的改造。



b. 关于改造费的计算

之前口胡了一堆,重写。计算方式就是每个状态乘以它升级的费用,就是5.7*3 + 9.4*3 +7.4*3 + 4.9*5 + 2.2 *5,总价格是104万。





总结:

这个计算方法应该适用于所有概率模型,包括所有掉级不掉级的。(当然,不掉级的通常都很好算,用古典概率模型可能更快)。

随便说个例子:

关于SR到几拿来升尔格是最经济的。以S石头1.3万来计算(潘妮服务器)。

S1 1块石头 3万改造费    总价4.3万 3899分              11LQB/分

S2 4块石头 12万改造费  总价17.2万 9214分             19LQB/分

S3 9块石头 27万改造费  总价38.7万 21775分           18LQB/分

S4 17.3块石头 56.4万改造费 总价78.9万 51458分     15.3LQB/分

S5 29.7块石头 103.5万改造费 总价142.1万 121604分 11.7LQB/分



如果你一定要使用SR武器来喂尔格,考虑到磨熟练度很麻烦,而且改造费用和改造多得尔格完全不成正比,所以喂S5给尔格武器完全没毛病,甚至我会推荐你用S4和S5的装备来喂尔格。尽量避免S2和S3拿来喂,亏到姥姥家。


2#

时透

 

觉厉觉厉
发表于 2020-4-13 02:10举报 引用

3#

wh1988

 

好久之前讨论过,我用期望算的



Macapuno : 这层算的和楼主一样其实也是在用markov chain 只不过这个方法在markov chain里叫first step analysis. 很神奇的是我最近在学校讲课正好讲到markov chain 下周我可以把这个作为变成一个题出给他们哈哈 / 2020-8-3 04:57
wh1988 : 在YY讨论的,好几年了 / 2020-4-13 11:44
杜伊斯 : 啊咧,我之前看了一下攻略站没注意有类似的主题啊。谢谢提供不同的思路。这里就当我拓展下计算了改造费用吧wwww现在感觉改造费比重是真大了 / 2020-4-13 02:45
发表于 2020-4-13 02:13举报 引用

4#

见过6块直达的  也见过二进制的   说白了还是看脸
发表于 2020-4-13 18:37举报 引用

5#

虽然不明白,但是觉得好厉害
发表于 2020-4-18 13:20举报 引用

6#

用普通改到S/R3,然后直接幸运到5,然后保护到6
发表于 2020-4-20 21:07举报 引用

7#

  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <ctime>
  4. using namespace std;

  5. int main()
  6. {
  7.         srand(time(0));
  8.         int tcost = 0;
  9.         for (int i = 0; i <= 1000000; i++)//模拟一百万次强化
  10.         {
  11.                 int lv = 0 , cost = 0;//等级初始化
  12.                 do
  13.                 {
  14.                         cost++;//消耗改造石
  15.                         switch (lv)
  16.                         {
  17.                         case 0:lv++; break;//0->1 100%
  18.                         case 1:if (rand() % 2 == 0)lv++;
  19.                                   else lv--; break;//1->2 50%
  20.                         case 2:if (rand() % 2 == 0)lv++;
  21.                                   else lv--; break;//2->3 50%
  22.                         case 3:if (rand() % 100 <= 44)lv++;
  23.                                   else lv--; break;//3->4 45%
  24.                         case 4:if (rand() % 100 <= 44)lv++;
  25.                                   else lv--; break;//3->4 45%
  26.                         default:break;
  27.                         }
  28.                 } while (lv != 5);//+5 下一轮强化
  29.                 tcost += cost;
  30.         }
  31.         cout << tcost / 1000001.00 << endl;
  32. }
复制代码

用多次模拟的方法也可求出近似值29.70
杜伊斯 : 用代码测试是个好主意,不过得换成我们rust的代码 【滑稽】 / 2020-7-9 02:24
发表于 2020-6-30 12:13举报 引用

8#

杜伊斯 ( 作者 )

 

看到有人发了C++的测试模拟器证实了我的这个结论,我再发个rust版本的吧lol:
  1. use rand::Rng;

  2. fn main() {
  3.     let n = 1000000;
  4.     let mut lv = 0u8;
  5.     let mut cost = 0u64;
  6.     let mut tcost = 0u64;

  7.     for _i in 0..n {
  8.         lv = 0;
  9.         cost = 0;
  10.         while lv != 5 {
  11.             match lv {
  12.                 0 => {lv += 1},
  13.                 1 | 2 => {if rand::thread_rng().gen_bool(0.5) {lv += 1;} else {lv-=1;} },
  14.                 3 | 4 => {if rand::thread_rng().gen_bool(0.45) {lv += 1;} else {lv-=1;} },
  15.                 _ => panic!("Matching attempt failed!"),
  16.             }
  17.             cost += 1;
  18.         }
  19.         tcost += cost;
  20.     }
  21.     println!("平均强化次数:{}", tcost as f64 / n as f64);
  22. }
复制代码
发表于 2020-7-9 02:23举报 引用

Tir na nOg

Mabinogi洛奇玩家基地

联系我们 : [email protected]

帮助中心

举报通道

BUG反馈与建议

私有徽章信息登记

捐助迪尔纳诺

交流群:241182316

Powered by Discuz! , Tir na nOg