[英]Seeing the next four numbers in a random sequence (using srand and rand)
我使用srand(SEED)為我的隨機數生成器播種一次,其中SEED只是按按鈕的時間長度生成的16位數字。 我的隨機數生成器工作正常,但是我需要能夠提前看到序列中的下四個數字,如果有必要的話,也不要打亂任何東西。
因此,我通過執行以下操作獲得序列中的下一個數字:
num = rand() % 4;
這給了我一個介於0到3之間的隨機數,這很好。 可以說前6個數字是0 3 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;
}
並使用它而不是rand()
。 然后在srand()
執行init:
int i;
for (i = 0; i<=3; i++)
nextfourrand[i] = rand();
接下來的四個隨機數位於nextfourrand
數組中。
我想我可以先打電話給srand(SEED),然后再打電話給rand()適當的時間,以回到原來的狀態。 這有點混亂並且效率低下,但是絕對可以。 考慮到這是一個SIMON游戲,大多數情況下,我不得不連續調用rand()才能回到玩家大概30歲左右的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.