2016-10-10 20 views
2

私はJavascriptで単純なBlackJackゲームをコーディングする過程にあります。私はすでにランダムから選択するMath.randomを使っているのでJavascript- Lodash shuffle vs. Math.Random()

var deal = function(){ 
    var card = Math.floor(Math.random() * deckArray.length); 
    return deckArray.splice(card,1)[0]; 
}; 

:私はこのように設定する「契約」の機能を持っている

var deckArray = [ "card1", "card2",...,"card52" ] 

:これまでのところ、私はこのような配列を持っていますdeckArray、これはLodashにこのような "シャッフル"機能を組み込むのは冗長でしょうか?

var shuffle = function(){ 
    deckArray = _.shuffle(deckNames); 
}; 
+0

いずれかが問題ありません。あなたが学んでいるように、グローバル変数の使用を止め、デックを 'deal'関数の引数として渡すことは良い習慣です。 – zerkms

+0

文字列のあるカードを表現するのも悪いです。文字列は人間のためのもので、コンピュータは数字を使用します。 –

答えて

1

だと思います。実際のカードでは、デッキをシャッフルし、デッキの上部からカードを1枚選ぶ。これはシャッフル機能を使って実際にやっていることなので、実際の使用方法をモデリングします。

Math.Random()で、シャッフルしていないデッキからランダムにカードを選んでいます。ここでの鍵はランダム性です(は実際にはランダムbtwではありません)。したがって、これは実際の使用の後でモデル化されていませんが、最終結果は同じです。

_.shuffle(Fisher-Yates)アルゴリズムを使用するよりも、それほど高速ではないため、私はMath.Random()を提案します。