如何对列表进行随机洗牌,以便没有元素保留其原始位置?
换句话说,给定一个具有不同元素的列表A,我想生成其排列B,使得:
- 这个排列是随机的 - 对于每个n,a[n] != b[n]
例如:
换句话说,给定一个具有不同元素的列表A,我想生成其排列B,使得:
- 这个排列是随机的 - 对于每个n,a[n] != b[n]
例如:
a = [1,2,3,4]
b = [4,1,2,3] # good
b = [4,2,1,3] # good
a = [1,2,3,4]
x = [2,4,3,1] # bad
我不知道这种排列的正确术语(是"全排列"吗?)因此在谷歌搜索时很困难。 正确的术语似乎是“错排”。
[1,1,2,3]
怎么办?只需要“完全”洗牌索引,还是算法也应该考虑值呢? - Kijewski