相关资料以及注意事项:
- 我的LeetCode解题集GitHub地址
- 欢迎私信或者留言交流!
算法介绍
Knuth-Durstenfeld Shuffle,就和洗扑克牌一样,保证原来的数字不在原有的位置上,可以用他来做随机播放音乐等等。
算法过程
public int[] shuffle() {
int[] result = src.clone();
int t ;
for (int i = result.length - 1; i > 0; i--) {
int x = ran.nextInt(i+1);
t = result[i];
result[i] = result[x];
result[x] = t;
}
return result;
}
- 倒叙循环。
- 生成随机数 x(x>1 && x<i)。
- 交换result[x],result[i]。
- 这样就保证了原来的数字肯定不在原来的位置上。
总结心得
简单而使用的算法。
网友评论