这个问题很快:)。我知道srand()
用于为随机数生成器种子,以防止生成相同的随机数序列。类似地,我知道getpid()
“将返回调用进程的进程ID。”
(http://pubs.opengroup.org/onlinepubs/009695399/functions/getpid.html)
由于每次运行我的程序(一个生产者和消费者通过共享内存进行通信的程序)时进程ID最终都是不同的,因此PID也会不同,从而提供一个完美的种子。我为随机数设置了一个范围。rand() % (100-1) + 1
是否以特定格式传递随机数?
为了完整起见,以下是我所查询的代码部分:
srand(getpid());
while(x == 0)
{
if(*randNum == 101)
{
*randNum = rand() % (100 - 1) + 1;
*pidNum = getpid();
printf("priority: %d Process ID: %d \n", *randNum, *pidNum);
x = 1;
}
else
{
*randNum++;
*pidNum++;
}
}
最佳答案
我不太清楚你说的具体格式是什么意思。但是getpid()不是一个好的选择。PID在一个非常小的“无符号”空间范围内,很容易猜测。
如果你不在乎别人能猜到你的种子,时间(空)是一个更好的选择作为种子。
关于c - srand(getpid())是否会影响格式/结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17927060/