【发布时间】:2014-10-20 19:27:12
【问题描述】:
我想问我应该如何在 Java 中实现一个方法,该方法从数组中获取所有元素并将它们打乱。像一副扑克牌一样思考。
这是我的尝试:
// a is an array of type String
public void randomize()
{
for(int i=0; i<k; ++i)
{
int idx = new Random().nextInt(k);
String random = (a[idx]);
System.out.println(random);
}
}
【问题讨论】:
-
你想从头开始写吗?
-
查看blog.codinghorror.com/the-danger-of-naivete 了解洗牌算法的讨论
-
我想知道一个想法或解释的方法。 :)
-
这里已经回答了 -> stackoverflow.com/questions/1519736/…
-
@Alnitak 它不完全是重复的:在另一个问题中,它是一个基元数组,而这里它是一个对象数组。特别是简短而甜蜜的
Collections.shuffle(Arrays.asList(a));不适用于int[],但可以用于String[]。