如何随机分布数组的所有元素?
How to randomly distribute all elements of an array?
我有一个包含 int
值 1、2 和 3 的数组,我想将所有这些值随机分配给三个不同的变量(不重复任何值)。这是我到目前为止得到的,但是当我测试它时,它有时会重复其中一个值。
问题:如何将一个数组的所有元素随机分配给几个不同的变量?
//method
public static double calculate(int randomVal[]){
Random random = new Random();
double randomAnswer = 0;
for(int i = 0;i < randomVal.length; i++){
randomAnswer = (randomVal[random.nextInt(randomVal.length)]);
}
return randomAnswer;
//create array
int[] randomVal = new int[] {1,2,3};
double solution1 = MathGame.calculate(randomVal);
double solution2 = MathGame.calculate(randomVal);
double solution3 = MathGame.calculate(randomVal);
如果你可以使用 Integer[]
那么你可能会使用 Collections.shuffle(List<?>)
and Arrays.asList(T...)
and then Arrays.toString(Object[])
来显示它
Integer[] randomVal = new Integer[] { 1, 2, 3 };
Collections.shuffle(Arrays.asList(randomVal));
System.out.println(Arrays.toString(randomVal));
这就是打乱整数数组的方法
void shuffle(int[] a) {
Random rnd = new Random();
for (int i = a.length; i > 1; i--) {
int r = rnd.nextInt(i);
int t = a[i - 1];
a[i - 1] = a[r];
a[r] = t;
}
}
然后只使用它的元素
int[] a = { 1, 2, 3 };
shuffle(a);
double solution1 = a[0];
double solution2 = a[1];
double solution3 = a[2];
如果您只想让 Java 处理它并使用描述的集合 here
Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));
Iterator<T> it=mySet.iterator();
//assign variables using it.next();
我有一个包含 int
值 1、2 和 3 的数组,我想将所有这些值随机分配给三个不同的变量(不重复任何值)。这是我到目前为止得到的,但是当我测试它时,它有时会重复其中一个值。
问题:如何将一个数组的所有元素随机分配给几个不同的变量?
//method
public static double calculate(int randomVal[]){
Random random = new Random();
double randomAnswer = 0;
for(int i = 0;i < randomVal.length; i++){
randomAnswer = (randomVal[random.nextInt(randomVal.length)]);
}
return randomAnswer;
//create array
int[] randomVal = new int[] {1,2,3};
double solution1 = MathGame.calculate(randomVal);
double solution2 = MathGame.calculate(randomVal);
double solution3 = MathGame.calculate(randomVal);
如果你可以使用 Integer[]
那么你可能会使用 Collections.shuffle(List<?>)
and Arrays.asList(T...)
and then Arrays.toString(Object[])
来显示它
Integer[] randomVal = new Integer[] { 1, 2, 3 };
Collections.shuffle(Arrays.asList(randomVal));
System.out.println(Arrays.toString(randomVal));
这就是打乱整数数组的方法
void shuffle(int[] a) {
Random rnd = new Random();
for (int i = a.length; i > 1; i--) {
int r = rnd.nextInt(i);
int t = a[i - 1];
a[i - 1] = a[r];
a[r] = t;
}
}
然后只使用它的元素
int[] a = { 1, 2, 3 };
shuffle(a);
double solution1 = a[0];
double solution2 = a[1];
double solution3 = a[2];
如果您只想让 Java 处理它并使用描述的集合 here
Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));
Iterator<T> it=mySet.iterator();
//assign variables using it.next();