Python列表打乱:Fisher-Yates洗牌算法详解
如果您不想使用random.shuffle(aList)来打乱一个列表,您可以尝试使用Fisher-Yates(也称为Knuth)洗牌算法。以下是一个示例代码来展示如何实现这个算法:
import random
def shuffle_list(aList):
n = len(aList)
for i in range(n-1, 0, -1):
j = random.randint(0, i)
aList[i], aList[j] = aList[j], aList[i]
return aList
这个算法通过从列表的末尾开始,每次随机选择一个位置并与当前位置进行交换,直到将整个列表都遍历完。这样可以确保每个元素都具有相等的概率被放置在任何位置上,从而实现列表的打乱。
原文地址: https://www.cveoy.top/t/topic/h3m 著作权归作者所有。请勿转载和采集!