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,所以我想知道是否有人可以带我浏览我的代码!
谢谢

您需要了解它才能实现它吗

算法就是从剩下的牌集中随机挑选一张牌,然后把它放在你的洗牌堆上。您的实现所做的是:

  • 从甲板的背面开始(计数器=长度-1,与之交换时)
  • 从0到1号柜台随机挑选一张牌,即任何一张牌,直到我们指向的牌为止
  • 将此卡与1号柜台的卡交换,即放在背面
  • 减少计数器-即,将卡留在原处-并重复此操作,直到到达牌组的前部
  • 在你的一副牌的后面一次一张地建立洗牌堆

    您可能需要将*行和之后的行更改为

    this.deck.setcard(counter, this.deck.getcard(index));
    this.deck.setcard(index, temp);
    

    (我猜的是
    setcard
    方法及其参数。)

    你的问题到底是什么?带有错误的代码行是错误的,不合法。web上到处都有完整的Fischer Yates Javascript实现。为什么不借用这样一个已经测试过的实现:这一个有一个视频可视化,感谢视频非常有用!谢谢这帮了大忙!