有两种方式,一种是从头到尾形式,另外一种是从尾到头形式
从尾到头形式就是首先在数组中的任何位置选择一个随机元素,然后使用数组中的最后一个元素进行交换。在下一步中,它从数组中除最后一个元素之外的任何位置选择一个随机元素,并将其与倒数第二个元素交换。它一直持续到交换每个元素为止。
从头到尾形式是首先在数组中的任何位置选择一个随机元素,然后使用数组中的第一个元素进行交换。在下一步中,它从数组中除第一个元素之外的任何位置选取一个随机元素,将其与第二个元素交换,直到交换每个无素为止。
参考:
http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
本文深入探讨了Fisher-Yates洗牌算法的两种实现形式:从头到尾和从尾到头。详细解释了每种形式如何通过随机交换元素来确保数组元素的随机排列,是理解随机算法原理的绝佳案例。
151





