【发布时间】:2014-10-23 06:45:38
【问题描述】:
我正在用随机整数 1 - 10 填充一个数组,但是当我这样做时,我需要检查整数是否已经在数组中。我用整数填充数组没有问题,但我检查重复整数的代码无法正常工作。
package arrayPackage;
import java.util.Arrays;
import java.util.Random;
public class BruteForce
{
//declare an integer array with 10 numbers.
int[] array = new int[10];
Random randomInt = new Random(); //random number generator
public void shuffle()
{
//int prevInt=0;
for(int i = 0; i < array.length; i++) //for each integer in the array pick a random integer and place in array
{
int temp = 1 + randomInt.nextInt(array.length);
for(int j = i; j < array.length; j++)
{
if(temp != array[j] && temp!= array[i])
{
array[i] = temp;
}
}
}
}
public void displayArray()
{
System.out.println(Arrays.toString(array));
}
}
【问题讨论】:
-
用数字 1-10 填充数组,然后洗牌不是更容易吗?
-
数组没有重复的时候你填
temp,但是如果有重复你在哪里处理呢? -
实现fisher-yates-knuth shuffle是高效且公正的,否则使用现成的实现(java中的内置方法)
标签: java arrays random duplicates