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) 算法快,虽然不是很显着。
我正在 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) 算法快,虽然不是很显着。