簡體   English   中英

以隨機順序查看接下來的四個數字(使用srand和rand)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM