java ArrayList随机化所有元素的索引更改
我如何随机化arrayList 因此,对于所有元素,旧索引不能与新索引相同
比如 有一个包含3个项目的列表
在arrayList之后随机化
旧指数<->;新索引
1<-->2 <--different
2<-->1 <--different
3<-->3 <--same is not allowed
我想确认一下
1<-->3 <--different
2<-->1 <--different
3<-->2 <--different
# 1 楼答案
以下是Fisher-Yates的一个变体,它迎合了至少一个项目将保持其原始位置的可能性
当前的
Collections.shuffle()
没有对列表执行完全的随机化可能最终还是会有问题,但我使用了以下代码来测试 洗牌时没有发现问题