1 から 9 までの範囲の乱数を使用してリソースを割り当てる必要があります。まず、1 から 9 までの乱数を取得する関数を実行します。次に、ランダムに等しいインデックスでリソースが割り当てられているかどうかを確認します。生成された数。リソースが割り当てられていない場合は割り当て、それ以外の場合は別の乱数の計算に戻ります。正常に動作しますが、ある時点を過ぎると効率が低下します。9 つのうち 5 つまたは 6 つのリソースが割り当てられた時点に到達すると、残りの割り当てを取得するまで長い間待たなければなりません。これを最適化するにはどうすればよいですか?
アルゴリズムは次のとおりです。
- リソースを取得します。
- 乱数を生成します。
- インデックスが乱数に等しい位置にリソースが割り当てられていない場合は、手順 4 に進みます。そうでない場合は、手順 5 に進みます。
- インデックスが乱数に等しい位置にリソースを割り当てます。
- ステップ 2 に進みます。