そのため、最終的な機能を構築するために複数のモジュールを組み合わせて何か大きなものを開発するたびに、同じ質問を疑問に思っていました:複数のモジュールがランダム関数を使用する必要がある場合、ランダムシードをどこで初期化するのですか?
ランダムが必要な特定のクラスがある場合 (たとえば、入力配列を自己実装のクイックソートでソートして初期化するクラスの場合、ピボットの選択にはランダムが必要になります)、通常はプライベートstatic bool isRandOn;
変数があるため、ランダムピボットの選択、私はその変数をチェックしsrand(time(NULL));
、ランダムがまだオンになっていない場合に行います.
名前空間に大量のユーティリティ関数がある場合、非常に似たようなことを行います。そのような変数を utils ライブラリ内の無名名前空間に置き、クラスとほぼ同じことを行います。
私が抱えている問題は、これらのモジュールを組み合わせるときです。それだけで、各モジュールがシードを複数回設定しないことを私は知っています。しかし、さまざまな量のモジュールを一緒に使用できるようにしたい、他の人が他のモジュールとは独立して 1 つまたは複数のモジュールを使用できるようにしたい...
では、複数のランダムシードが必要なモジュールを処理する最良の方法は何ですか? 各モジュールにシードを設定しますか? シードをまったく設定しないで、代わりにランダムの使用法を文書化し、ユーザーがモジュールを使用したい場合にシードを初期化するようにしますか? 第三の何か?