我正在用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);
};
答案 0 :(得分:3)
我认为会的。使用真卡,我们将牌组洗牌,然后从牌组顶部挑选一些牌。这就是你可能正在使用shuffle函数做的事情,从而模拟现实世界的使用。
使用Math.Random()
,您将从一个未洗牌的牌组中随机挑选一张牌。这里的关键是随机性(不是真的随机顺便说一句)。因此,虽然这不是在现实世界使用之后建模的,但最终结果是相同的。
我建议使用Math.Random()
,因为它会比使用_.shuffle
(Fisher-Yates)算法更快,但速度要快。