Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 查看随机序列中的下四个数字(使用srand和rand)_C_Random_Srand - Fatal编程技术网

C 查看随机序列中的下四个数字(使用srand和rand)

C 查看随机序列中的下四个数字(使用srand和rand),c,random,srand,C,Random,Srand,我使用srand(seed)为随机数生成器设定一次种子,其中seed是一个16位的数字,由按下按钮的时间生成。我的随机数生成器工作得很好,但我需要能够提前看到序列中的下四个数字,如果有意义的话,不中断任何操作 因此,我通过执行以下操作获得序列中的下一个数字: num = rand() % 4; 这给了我一个介于0和3之间的随机数,这很好。假设前6个数字是03 2 1 2 3,我刚刚生成了序列中的前3个。接下来的四个数字是2,1,2,3。我希望能够获取这些数字并显示它们,但是再次调用rand()

我使用srand(seed)为随机数生成器设定一次种子,其中seed是一个16位的数字,由按下按钮的时间生成。我的随机数生成器工作得很好,但我需要能够提前看到序列中的下四个数字,如果有意义的话,不中断任何操作

因此,我通过执行以下操作获得序列中的下一个数字:

num = rand() % 4;
这给了我一个介于0和3之间的随机数,这很好。假设前6个数字是03 2 1 2 3,我刚刚生成了序列中的前3个。接下来的四个数字是2,1,2,3。我希望能够获取这些数字并显示它们,但是再次调用rand()会破坏原始序列(顺便说一句,这是一个SIMON游戏,一个查看下一步操作的作弊模式)


调用srand(SEED)将使我返回到第一个数字,因此我可以很容易地看到序列中的前四个数字,而不会中断任何操作,但是如果我想看到数字x->x+4,那么它会把事情搞砸。

使用类似的方法:

int nextfourrand[4];

int
myrand (void);
{
    int i;
    int r = nextfourrand[0];
    for (i = 0; i<=2; i++)
        nextfourrand[i] = nextfourrand[i+1];
    nextfourrand[3] = rand();
    return r;
}

接下来的四个随机数在
nextfourrand
数组中。

我想我可以直接调用srand(SEED),然后调用rand()适当的次数以返回到原来的位置。这有点凌乱和低效,但它确实有效。考虑到这是一个SIMON游戏,我必须连续调用rand()才能回到玩家所在的位置的次数最多是30次左右。

听起来你需要某种缓冲(也许是a?)。谢谢,这应该比我提出的混乱解决方案要好
int i;
for (i = 0; i<=3; i++)
    nextfourrand[i] = rand();