この質問は簡単なものです:)。srand()
同じシーケンスの乱数が生成されるのを防ぐために、乱数ジェネレーターをシードするために使用されることを知っています。getpid()
同様に、 「呼び出したプロセスのプロセス ID を返さなければならない」ということも知っています。
( http://pubs.opengroup.org/onlinepubs/009695399/functions/getpid.html )
私のプログラム (プロデューサーとコンシューマーが共有メモリを介して通信するプログラム) を実行するたびにプロセス ID が最終的に異なるため、PID も異なり、完全なシードが得られます。乱数の範囲を設定しましたrand() % (100-1) + 1
。
srand(getpid())
乱数は特定の形式で配信されますか?
完全を期すために、私の問い合わせに関連するコードのセクションを次に示します。
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++;
}
}