level 4
我也不信垫卡,但是你这没解决一个问题,美食的代码要是不是直接用random产生的随机数咋办,可能使用别的,或者美食用的代码是你每次失败下次都会略微提高成功率?不清楚代码到底怎么写的,无论如何我们做的都是黑盒测试。
2022年10月31日 06点10分
7
@Xero⚡12 “如果官方需要定期更换规律防止你利用,那还不如不设规律,多此一举。”这句太妙了,哈哈哈。
2022年10月31日 07点10分
我解决的是“伪随机数≠可以垫卡”。官方可能预设了规律,但目前没人给出明确的规律,甚至炸了还怪“规律被暗改了”。如果官方需要定期更换规律防止你利用,那还不如不设规律,多此一举。
2022年10月31日 07点10分
@武藤苏 但是有一个问题,就是如果官方想保住玩家,想一些规律防止玩家上头全炸退坑,也就是保底,但又要防止玩家找出来利用,因此每隔一段时间更换规律。如果出现这种可能就确实有可能有规律。
2022年10月31日 07点10分
level 14
代码内容:
#include <Windows.h>
#include <stdio.h>
#include <time.h>
const int SeriesLen=20000;//随机序列长度
const int GivenLen=5; //规律长度
const int GivenRepNum=3; //规律复现次数
const int UpgradeNum=100; //强化高星卡张数
int Res[SeriesLen]; //强化结果。0=失败,1=成功
int ResColor[SeriesLen]; //强化结果显示颜色
int RepLoc[GivenRepNum]; //重复字段位置
int RepCont[GivenLen]; //重复字段内容
void color(const unsigned short textColor) //设置字体颜色
{
if(textColor>=0 && textColor<=15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int random(int n)//生成一个0~n-1的随机数
{
return (int)((double)rand()/(RAND_MAX+1)*n);
}
int Equal(int n1,int n2,int len)//比较两串结果是否相等。起点1,起点2,串长度
{
int i;
for (i=0;i<len;i++)
if (Res[n1+i]!=Res[n2+i]) return 0;
return 1;
}
int RepeatNum(int n0,int n,int len)//复现次数。检验起点,检验终点,规律长度
{
int i;
int loc=n0+len;//当前检验位置
int ans;
int RepNum=1;
RepLoc[0]=n0;
for (i=0;i<len;i++)
RepCont[i]=Res[n0+i];
while(loc<=n+1-len)
{
ans=Equal(n0,loc,len);
if (ans==0) loc++;
else
{
RepLoc[RepNum]=loc;
RepNum++;
loc=loc+len;
}
}
return RepNum;
}
int MaxRepeatNum(int n,int len)//最大复现次数
{
int i,j,MaxRepNum,rep,Maxi=0;
MaxRepNum=0;
for (i=0;i<=n+1-len;i++)
{
rep=RepeatNum(i,n,len);
if (rep>MaxRepNum)
{
Maxi=i;
MaxRepNum=rep;
}
}
RepeatNum(Maxi,n,len);
for (i=0;i<SeriesLen;i++) ResColor[i]=7;
for (i=0;i<GivenRepNum;i++)
for (j=0;j<len;j++)
{
ResColor[RepLoc[i]+j]=10;
}
return MaxRepNum;
}
void main()
{
int i,j,MaxRep,ResNum,loc;
int Rep4Num;
int succ=0,fail=0;
srand((unsigned int)time(NULL));
for (i=0;i<SeriesLen;i++)
Res[i]=random(2);
for (i=GivenLen-1;i<SeriesLen;i++)
{
MaxRep=MaxRepeatNum(i,GivenLen);
if (MaxRep>=GivenRepNum)
{
printf("重复字段=");
color(10);
for (j=0;j<GivenLen;j++) printf("%d",RepCont[j]);
color(7);
break;
}
}
ResNum=i+1;
printf("\n");
loc=ResNum;
Rep4Num=0;
while(1)
{
if (Equal(RepLoc[0],loc,GivenLen-1))
{
Rep4Num++;
for (j=0;j<GivenLen-1;j++) ResColor[loc+j]=10;
ResColor[loc+GivenLen-1]=6;
if (Res[loc+GivenLen-1]==0) fail++; else succ++;
loc=loc+GivenLen;
if (Rep4Num>=UpgradeNum) break;
}
else loc++;
}
for (i=0;i<loc;i++)
{
color(ResColor[i]);
printf("%d",Res[i]);
}
color(7);
printf("\n");
printf("强化数量:%d,成功:%d,失败:%d,成功率:%.2lf%%,垫卡次数=%d\n",UpgradeNum,succ,fail,(double)succ/UpgradeNum*100,loc);
}
2022年10月31日 07点10分
8
比较字符串相等为什么不用字符串哈希?字符串匹配为什么不用 KMP?
2022年10月31日 08点10分
复制过去就可以运行了。规律长度、规律复现次数、强化高星卡张数都可以改,你觉得复现3次不靠谱就改成10次。有问题可以交流。
2022年10月31日 07点10分
@凌乱之风 我是在长度为20000的int数组中比较两个小段是否相同,感觉逐个判定写起来简单
2022年10月31日 08点10分
@凌乱之风 直接暴力就完事了 java的indexof就是暴力
2022年10月31日 08点10分
level 4
我认为垫卡规律根本不可能验证,想要证明真有用起码要大量数据吧,1000次够吧,我看不少人找个规律都要半个小时,1000次时间成本太高,而且不能用程序模拟,因为我们根本不知道代码咋写的,用程序模拟没意义,最好有个人直播垫1000次,假设40%的概率,要是能成450次,我都认了有用,至于有的人说垫卡成功率用高于不垫,那结果更加显而易见。如果没有太多高星卡,可以用低星卡来测试,反正只是证明确实垫卡有用。
2022年10月31日 07点10分
9
“至于有的人说垫卡成功率用高于不垫” 打错了,应该是这个
2022年10月31日 07点10分
用0卡强化2卡强化到3,成本比较低
2022年10月31日 07点10分
level 4
我看不少人每次强卡都要重新垫卡找规律,而且是在一次大更新内,也就是说规律会频繁改变,要是有个长期(一周或一个月)的规律,早就有人找出来发到贴吧、群和各个平台了,但实际上每个人找到的规律都是不一样的,所以压根没啥规律,不然早就有人靠这个专门带上卡赚钱了。要是真能高概率上卡,你说上张15、16能收费多少?早就盆满钵满了。
2022年10月31日 07点10分
10
其实上15、16之类是有人包成的,二转也是有人包的
2022年10月31日 11点10分
@園田海未🌊🌊 15/16包成不知道,二转包成这边都是5倍保险,然而二转成功率20%
2023年01月28日 15点01分
level 6
我就充了一百多块钱 垫了一张12小火一张13海星 都是一次成 我觉得垫卡倒像是一种安慰 毕竟值得垫卡去强化的高星卡要么花了大量的钱要么攒了好久的材料 直接上号强化三秒钟时间没了多少心里不是那么好受
时间长一点垫卡 成了会很有成就感 炸了也有个安慰说自己没找到规律
2022年10月31日 09点10分
17