下面的代码随机生成10组 每组10位的一个Arraylist 但是生成的结果是每组内的数字是随机的 但是组与组之间相同,应该是时间种子都相同的缘故吧?请问怎么样才能让10组都不相同呢?如果不用加delay的方法?
package Algorithm;
import java.util.*;
public class radixSort {
private ArrayList<int []> list=new ArrayList<int []>();;
radixSort(int r,int c){
Random rand=new Random(System.currentTimeMillis());
int [] row=new int [c];
for(int j=0;j<r;j++){
for(int i=0;i<row.length;i++)
row[i]=rand.nextInt(10);
list.add(row);
}
}
/**
 * @param args
 */
public static void main(String[] args) {
radixSort sort=new radixSort(10,10);
for(int [] x:sort.list){
for(int y:x)
System.out.print(y);
System.out.println();
} }}

解决方案 »

  1.   

    row[i]=rand.nextInt(10);
    你把nextInt(10)括号中的10去掉试试看
      

  2.   


    import java.util.*;public class radixSort {
    private ArrayList<int[]> list = new ArrayList<int[]>();; radixSort(int r, int c) {
    Random rand = new Random(System.currentTimeMillis());
    int[] row = new int[c];
    for (int j = 0; j < r; j++) {
    row = new int[c];//这儿加上这句就行了
    for (int i = 0; i < row.length; i++)
    row[i] = rand.nextInt(10);
    list.add(row);
    }
    } /**
     * @param args
     */
    public static void main(String[] args) {
    radixSort sort = new radixSort(10, 10);
    for (int[] x : sort.list) {
    for (int y : x)
    System.out.print(y);
    System.out.println();
    } }}
      

  3.   

    原因是list里面加进去的是数组的引用,你每次不new的话,就是用同一引用,在里层for循环的时候,只是改了数组中的元素值,所以只保存了最后一次的值。
      

  4.   

    不是随机种子的关系,而是你list的每一项都是同一个数组,也就是生成新的一组数时其实是把老的一组覆盖了就像ls所改的那样,把数组创建放到第一层循环里就好了