c********l 发帖数: 8138 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: coupondeal (Coupon Deal), 信区: JobHunting
标 题: 求问一道数组shuffle的问题
发信站: BBS 未名空间站 (Sun Mar 17 21:46:36 2013, 美东)
数组shuffle,经典的Fisher and Yates的算法是
public static void shuffle(List> list, Random rnd) {
int size = list.size();
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
}
}
如果将
swap(list, i-1, rnd.nextInt(i));
改成
swap(list, i-1, rnd.nextInt(N));
会出错。
具体出错的原因是什么?怎么描述这种现象? |