我有这个方法:
shuffleDeck: function()
{
var counter = this.deck.length, temp, index;
while(counter > 0)
{
index = Math.floor(Math.random() * counter);
counter--;
temp = this.deck.getcard(counter);
this.deck.getcard(counter) = this.deck.getcard(index); //*
temp = this.deck.getcard(index);
}
},
在标有*的行上给出了错误。我知道为什么我得到错误(=的左手是不正确的),但我不完全理解Fischer-Yates的洗牌,所以我想知道是否有人可以引导我完成我的代码! 感谢
答案 0 :(得分:1)
你需要理解它来实现吗?
算法只是从剩下的一组牌中随机挑选一张牌并将其放在你的洗牌堆上。您的实施正在做的是:
一次在一张牌的背面堆积洗牌堆。
您可能需要更改*行和后面的行
this.deck.setcard(counter, this.deck.getcard(index));
this.deck.setcard(index, temp);
(我猜测setcard
方法及其参数。)