2016-10-10 100 views
2

我正在使用Javascript編寫簡單的BlackJack遊戲。到目前爲止,我有一個這樣的數組:Javascript-Lodash shuffle vs. Math.Random()

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

我有一個「交易」功能的設置是這樣的:由於我已經在使用的Math.random隨機從選擇

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

deckArray,對於我來說,像這樣在Lodash中加入「隨機播放」功能是多餘的嗎?

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

兩者都很好。順便說一句,正如你正在學習的那樣 - 停止使用全局變量並將套牌作爲交易函數的參數傳遞是一個好習慣。 – zerkms

+0

用字符串表示卡片也不好。字符串用於人類 - 計算機使用數字。 –

回答

1

我認爲會的。憑藉真正的牌,我們洗牌,然後從甲板頂部挑選一些牌。這就是你可能會用shuffle函數做的事情,從而爲現實世界的使用建模。

隨着Math.Random(),你從一個沒有洗牌的套牌隨機挑選一張牌。這裏的關鍵是隨機性(這不是真的是隨機順便說一句)。所以,雖然這不是在真實世界使用之後建模的,但最終結果是相同的。

我建議Math.Random(),因爲它雖然不會顯着地比使用_.shuffle(Fisher-Yates)算法更快。