Javascript-Lodash随机播放与Math.Random()

Kno*_*eMC 5 javascript random shuffle playing-cards lodash

我正在用Javascript编写一个简单的BlackJack游戏。到目前为止,我有一个像这样的数组:

var deckArray = [ "card1", "card2",...,"card52" ]
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的“交易”功能:

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

由于我已经在使用Math.random来从deckArray中随机选择,对我来说,将这样的“ shuffle”函数与Lodash结合起来是否对我来说是多余的?

var shuffle = function(){
  deckArray = _.shuffle(deckNames);
};
Run Code Online (Sandbox Code Playgroud)

reg*_*ahn 5

我想会的。我们使用真实的纸牌洗牌,然后从纸牌顶部选择一些纸牌。这就是您可能会使用随机播放功能执行的操作,从而为现实世界中的使用建模。

使用Math.Random(),您可以从未洗牌的牌堆中随机选择一张牌。这里的关键是随机性(这是不是真正随机的BTW)。因此,尽管这不是在实际使用之后建模的,但最终结果是相同的。

我建议Math.Random()这样做,因为它(尽管不明显)比使用_.shuffle的(Fisher-Yates)算法更快。