2013-05-02 2 views
6

さて、JavaScriptでポケモンのゲームを作っているとします。私はこのようなオブジェクト...異なる確率で配列のランダムな項目を取得しますか?

pokemon = { 
    "pikachu": {hp: 100, probability: 0.1}, 
    "squirtle": {hp: 90, probability: 0.2} 
}; 

が、私は基本的にランダムにオブジェクト内のポケモンを選択する機能を必要とするだけでなく、確率に基づいています。だから、この場合、確率が高いほど「スズメ」を選択する可能性が高い関数は「ピカチュウ」よりも高い。

+0

何が必要ですか?乱数を返すJavaScript関数ですか?私はあなたが望むものを達成するためのいくつかの方法があるので、あなた自身で論理を実装しなければならないのではないかと心配しています。 – acdcjunior

+1

@ Jean-Bernard Pellerinは使い方が一番ですか? – Danny

答えて

6

私はポケモンの配列をループし、すべての確率を加算します。これを呼び出すtotal

次に、0とtotalの間の値を生成します。これを呼び出すrandVal

その後、ループスルーして、確率を再び加算します。これを呼ぶsecondTotal
確率がsecondTotalを上回る最初のポケモンは、randValがあなたの選択したポケモンです。

+0

よろしくお願いします。 – Danny

1
function pickAWinningItem(data) { 
    var winner = Math.random(); 
    var threshold = 0; 
    for (let i = 0; i < data.length; i++) { 
     threshold += parseFloat(data[i].prob); 
     if (threshold > winner) { 
      return data[i] 

     } 
    } 
} 

すべての確率の合計は、乱数がその確率の範囲であることを、あなたが互いの上に確率をスタックしてアイテムを返すこの機能を1に等しくなければなりません。

関連する問題