gpt4 book ai didi

c - Linux 中的进程 : Getting every child process to sleep a Random number of seconds

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:13 26 4
gpt4 key购买 nike

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

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

int sleep 时间 = rand() % 16 + 5;//那是因为我需要 5 到 20 之间的值

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

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

能否请您建议我一些实现方法?提前谢谢你。

最佳答案

如果您使用的是 Linux,您还可以通过从 /dev/random 中读取来为 PRNG 播种。像这样:

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)
}

关于c - Linux 中的进程 : Getting every child process to sleep a Random number of seconds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com