欢迎光临本站!

关于在石器随机函数的BUG

来源:sa60    更新时间:2022-04-11 12:07    编辑:神奇    浏览:335

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

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

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


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

评论区

关于在石器随机函数的BUG---文章已关闭评论~

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻