Javascript- Lodash shuffle 对比 Math.Random()

Javascript- Lodash shuffle vs. Math.Random()

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

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

我有一个 "deal" 函数设置如下:

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

既然我已经在使用 Math.random 从 deckArray 中随机选择,那么像这样将 "shuffle" 函数与 Lodash 合并对我来说是多余的吗?

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

我想会的。使用真实的纸牌,我们洗牌,然后从牌堆顶部挑选一些牌。这就是您可能会对 shuffle 函数执行的操作,从而模拟真实世界的使用。

使用 Math.Random(),您可以从未洗牌的牌组中随机挑选一张牌。这里的关键是随机性(这不是真正随机顺便说一句)。所以,虽然这不是根据现实世界的使用建模的,但最终结果是一样的。

我建议 Math.Random() 因为它会比使用 _.shuffle 的 (Fisher–Yates) 算法快,虽然不是很显着。