关于在石器随机函数的BUG - 神奇石器发布网
石器时代发布网 - 神奇石器旗下石器私服技术交流网 - 业务联系QQ:420004208

关于在石器随机函数的BUG

  • 内容
  • 相关

这个BUG一直存在,而且很早就有人利用过,只是一直不明显,或者说没人发现。最近貌似爆发的挺多的,主要影响的有转宠这块,具体怎么利用并不太清楚,大意就是利用某个操作可以让这个函数的随机值都是最大数。然后转出来的宠都是极品档的。

石器代码里随机函数定义如下:


#define RAND(x,y)   ((x-1)+1+ (int)( (double)(y-(x-1))*rand()/(RAND_MAX+1.0)) )
按照C语言随机函数rand()出来的都是伪随机数,会出现在1秒之内出现的数都是同一个数,但具体用什么方法让这个随机函数100%出现最大值就不得而知了。针对这种情况,我们可以自行写一个函数来代替这个函数。


 int Rand(int x, int y) {
     int a = 0;
     srand((unsigned)time(NULL));  //读取系统时间,产生一个种子数值
     a = rand() % (y+1) + x;    //产生随机数
     return a;
}
随便写了一个,作为参考,这里还是有问题,用(unsigned)time(NULL)做随机种子是以秒的形式,在for和while循环里都是以毫秒执行的,可能还是会出现问题,这个只提供作为参考。


版权声明:若无特殊注明,本文皆为《sa60》原创,转载请保留文章出处。

本文链接:关于在石器随机函数的BUG - https://www.sa60.com/post-366.html

本文标签:

关于在石器随机函数的BUG