新しいプロセスが起動するたびに、(プロセスに属する)変数に新しいランダム値を与えたいと思う。Linuxのプロセス:すべての子プロセスをスリープ状態にする。
作成するすべてのプロセスをランダムな秒数にするには、このランダム生成が必要です。プログラムの冒頭で私は srand(time(NULL))
を使用し、プロセスが実行する機能では私は
int sleeptime = rand() % 16 + 5; //that's because I need values from 5 to 20
を使用しました。
私はこのようなことを実装しようとしましたが、すべてのプロセスで変数の値が同じであることがわかりました。
srand(..)の引数として、現在の時間をミリ秒(それぞれのプロセスが始まる時間)で取った場合、私はランダムな値を取得すると思います。問題は私がこれに関する情報を見つけられなかったことです。別のページで提案されているのは、よく知られていることです:srand(time(NULL));
(time(NULL)は現在の時刻を秒単位で返します)。
これを実装する方法を教えてください。前もって感謝します。
すべてのプロセスは同時に起動するので、おそらくは同じ時刻で 'srand'を呼び出すことになり、' rand'から同じ乱数を返すことになります。あなたは 'srand'のためのより良いランダム化の源を必要とします。 –
問題の解決策を見つけました。 http://stackoverflow.com/questions/8623131/why-is-rand-not-so-random-after-fork –