Javascript 理解费希尔·耶茨洗牌
我有这个方法:Javascript 理解费希尔·耶茨洗牌,javascript,Javascript,我有这个方法: shuffleDeck: function() { var counter = this.deck.length, temp, index; while(counter > 0) { index = Math.floor(Math.random() * counter); counter--;
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 shuffle,所以我想知道是否有人可以带我浏览我的代码!
谢谢您需要了解它才能实现它吗 算法就是从剩下的牌集中随机挑选一张牌,然后把它放在你的洗牌堆上。您的实现所做的是:
this.deck.setcard(counter, this.deck.getcard(index));
this.deck.setcard(index, temp);
(我猜的是
setcard
方法及其参数。)你的问题到底是什么?带有错误的代码行是错误的,不合法。web上到处都有完整的Fischer Yates Javascript实现。为什么不借用这样一个已经测试过的实现:这一个有一个视频可视化,感谢视频非常有用!谢谢这帮了大忙!