在C中播种rand()与时间无关

Raf*_*ael 3 c random

我正在使用stdlib生成随机数.我知道有更好的发电机,但stdlib对我来说足够了.

我在做:

while(condition){
    sleep(1);
    srand(time(NULL));
    r=rand();
}
Run Code Online (Sandbox Code Playgroud)

它在一个循环中,所以我需要sleep(1)或种子是相同的,并重复数字.事实是,我需要生成数千甚至数百万的数字,如果我每个数字等待1秒,则需要很长时间.那么还有另一种独立于种子的方式吗?

nne*_*neo 10

您只需要播种一次(启动时),然后生成任意数量的数字.不要为每个数字重新设置一次 - 这是毫无意义的,并且你基本上必须生成随机种子以生成随机数(这首先违背了使用PRNG的目的).