ランダムなモンスターとの遭遇を生み出そうとしています。基本的には「バトルを探す!」を押すと ボタン、プレイヤーが戦うためにランダムなモンスターを返したい. しかし、問題は、一部のモンスターが他のモンスターよりも出現する機会が多く、一部のモンスターが非常にまれであることです。
最善の方法を考えていて、今のところ3つの方法を考えています。
すべてのモンスターに「重量」を与え、それらの重量をリスト内のすべてのモンスターの合計重量で割って、選択される可能性を % にします。長所:簡単に作れます。短所: モンスターを追加すると、一部のモンスターがレアになりすぎて、私が望むものになる可能性があります。
すべてのモンスターに % の確率で遭遇し、それらすべてをランダムな順序でリストに入れます。次に、リストの最初のモンスターから始めて、遭遇する % の確率を使用してサイコロを転がします。true の場合、モンスターを選択します。false の場合、リスト内の次のモンスターに移動します。少なくとも 1 体のモンスターは 100% の確率で遭遇し、確実に遭遇します。長所: 非常にランダムに見えます。短所:#1と同じですが、その価値に対して少し複雑すぎるかもしれません.
すべてのモンスターにモンスター タイプ (IE: ノーマル、ストロング、レア) を与え、次にすべてのタイプに % の確率で選ばれるようにします。次にサイコロを振って遭遇時にどのタイプが選択されるかを確認し、そのタイプのモンスターをランダムに選択します。長所: やりやすく、レア モンスターが望む % の確率を維持します。短所: すべてのモンスターに独自の % チャンスを持たせることはできません。
私の質問: それを行う最善の方法は何ですか? 私が言った方法の1つ、またはそれを行うためのより良い方法はありますか?
それはウェブサイト用で、私はasp.net、C#、およびSQLサーバーを使用しています。Javascript と jquery は問題ありません。さらに情報が必要な場合は、喜んで共有します。
編集:それを行う4番目の方法を考えました。これは 1 と 3 の混合になります。すべてのモンスターに「重み」(1 から 1000 の間) を使用します。次に、1000 のサイコロを振ります。次に、生成されたサイコロの乱数未満の重量を持つモンスターごとに、それらをリストに入れ、リストからランダムなモンスターを選びます。