java中排列/打乱数组列表元素
假设我有整数数组列表...有没有一种方法可以生成数组列表中元素的随机排列/排列,
因此如果列表是 {1,2,3,4,5,6}
调用某种方法 randomPermute () 会将其更改为随机值,例如
{1,3,2,6,5,4}
suppose I have arraylist of integers...is there a way that I can generate a random permutation/arrangement of the elements in the arraylist
so if the list is {1,2,3,4,5,6}
calling some method randomPermute() would change it to something random like
{1,3,2,6,5,4}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Collections.shuffle()
的工作:public static void shuffle(List list)
-使用默认的随机源随机排列指定的列表。所有排列发生的可能性大致相等。
http:// download.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List)
例如
示例输出
Collections.shuffle()
does the job:public static void shuffle(List<?> list)
-Randomly permutes the specified list using a default source of randomness. All permutations occur with approximately equal likelihood.
http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List)
For example
Sample Output
您可以使用Knuth shuffle:遍历位置 1 到 n−1,并针对每个位置我将当前存在的元素与从位置 i 到 n(含)中任意选择的元素交换。
编辑:hooch 的答案更好。 :)
You can use the Knuth shuffle: go through the positions 1 through n−1, and for each position i swap the element currently there with an arbitrarily chosen element from positions i through n, inclusive.
Edit: The answer by hooch is better. :)
一个简单的例子:
A simple example: