これをできる限り説明しようと思います。各アイテムに残っているアイテムの量に基づいて、ランダムな値 (色) を生成する必要があります。
5 つの色があり、各色に 10 個のスポットがあるとします。
Red = 10
Blue = 10
Green = 10
Yellow = 10
Black = 10
すべての色に 10 個のスポットがあるため、各色のチャンスが等しい最初のランダムな色を取得したいと思います。次に、選択された最初の値が赤の場合、リストは次のようになります
Red = 9
Blue = 10
Green = 10
Yellow = 10
Black = 10
次に、他の色で利用可能なスポットがより高いため、次のランダム値は赤の重みをわずかに低くします。赤が再び選ばれたとしましょう。リストは次のようになります。
Red = 8
Blue = 10
Green = 10
Yellow = 10
Black = 10
そのため、次のラウンドでは赤の重みがさらに低くなります。
基本的には、各スポットが均等に選ばれる可能性を等しくしたいのですが、スポットを均等に分散させたいと思います (シーケンシャルになることはありません)。
色は 5 より多い場合も少ない場合もあり、利用可能なスポットは最大 1000 まで可能です。データは DB に保存されますが、1 秒あたり複数のスポット リクエストが発生する可能性があるため、このデータを保存する方法に関する提案も歓迎します。スポットが要求されると、カラー グループから削除されます。
大変感謝します!