0

我想让一个变量(属于一个进程)在每次新进程启动时获得一个新的随机值。

我需要这个随机生成来使每个创建的进程睡眠随机数秒。在我使用的程序开始时,在我使用 srand(time(NULL))的进程将运行的函数中

int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20.

我试图实现这样的事情,但我看到对于每个进程,变量的值都是相同的。

我认为,如果我将当前时间(以毫秒为单位)(各个进程开始的时间)作为 srand(..) 的参数,我会得到随机值。问题是我没有找到任何相关信息。不同页面上唯一建议的是众所周知的:(srand(time(NULL));其中 time(NULL) 以秒为单位返回当前时间)。

请你给我一些方法来实现这个?先感谢您。

4

1 回答 1

1

如果您使用的是 linux,您还可以通过读取/dev/random. 像这样的东西:

void seedprng() {
    unsigned i;
    FILE* f = open("/dev/random", "rb");
    if (f) {
        fread(&i, sizeof(i), 1, f);
        fclose(f);
        }
    else{
        printf("falling back to time seeding\n");
        i = (unsigned)time(NULL);
        }
    srand(&i)
    }
于 2016-04-25T20:57:45.680 回答