我正在使用一个随机数生成函数,并且可以正常工作,但是我需要重置一个函数变量nSeed,并在范围内发生if时让函数重新启动,比如说nSeed=5323

当int 5323时如何将其返回到其起始值a%16==0?我不确定该怎么做。

这是一个例子:

unsigned int PRNG()

{
    static unsigned int nSeed = 5323;
    nSeed = (8253729 * nSeed + 2396403);
    return nSeed  % 32767;
}

int main()
{
   int count=0;
   int a=3;
   int b=5;
   while(count<1000)
   {
       count=count+1;
       a=a+b;
       cout<<PRNG()<<endl;

          if(a%16==0)
          {
               nSeed= 5323;   //here's the problem, "Error nSeed wasn't
                              //declared in the scoop"
          }
   }
}

最佳答案

首先,您需要了解变量的范围。在您的情况下,main不知道什么是nSeed,因为它在该函数的外部声明。在两个不同的函数nSeedmain中引用PRNG()时,请将其声明为全局变量。

在头文件之后声明static unsigned int nSeed = 5323;。将其移出PRNG()

关于c++ - 当范围内发生条件时,如何重置函数中的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49070636/

10-10 14:25