Javascript- Lodash shuffle vs. Math.Random()

时间:2016-10-10 23:28:38

标签: javascript random lodash shuffle playing-cards

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

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

我设置了这样的“交易”功能:

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

由于我已经在使用Math.random从deckArray中随机选择,对于我来说,像Lodash一样使用“shuffle”函数会不会是多余的?

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

1 个答案:

答案 0 :(得分:3)

我认为会的。使用真卡,我们将牌组洗牌,然后从牌组顶部挑选一些牌。这就是你可能正在使用shuffle函数做的事情,从而模拟现实世界的使用。

使用Math.Random(),您将从一个未洗牌的牌组中随机挑选一张牌。这里的关键是随机性(不是真的随机顺便说一句)。因此,虽然这不是在现实世界使用之后建模的,但最终结果是相同的。

我建议使用Math.Random(),因为它会比使用_.shuffle(Fisher-Yates)算法更快,但速度要快。