这个问题很快:)。我知道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/

10-16 20:23