随机数异常

import java.util.*;

public class test {
public static void main(String[] args) {
for (int i = 0; i < 10 ; i++) {
new test().a();
}

}

public void a() {
    ArrayList list = new ArrayList();

    int n = 13;
    Random rand = new Random();
    boolean[] bool = new boolean[n];

    int num = 0;

    for (int i = 1; i < n-1; i++) {

        do {
            //如果产生的数相同继续循环
            num = rand.nextInt(n);

        } while (bool[num]);

        if (num != 0) {
            bool[num] = true;

            list.add(num);


        }
    }

    System.out.println(" size:"+list.size());
    for (int i = 0; i < 10; i++) {

         System.out.println("第"+i+"个是:"+list.get(i));
    }


}

}
这个怎么报错呢?
shiren1118shiren1118@126.com 10:43:34
import java.util.*;

public class test {
public static void main(String[] args) {
for (int i = 0; i < 10 ; i++) {
new test().a();
}

}

public void a() {
    ArrayList list = new ArrayList();

    int n = 500;
    Random rand = new Random();
    boolean[] bool = new boolean[n];

    int num = 0;

    for (int i = 1; i < n-1; i++) {

        do {
            //如果产生的数相同继续循环
            num = rand.nextInt(n);

        } while (bool[num]);

        if (num != 0) {
            bool[num] = true;

            list.add(num);


        }
    }

    System.out.println(" size:"+list.size());
    for (int i = 0; i < 100; i++) {

         System.out.println("第"+i+"个是:"+list.get(i));
    }


}

}
这个就不会·····

什么原因?如何解决

你这是因为:当NUM=0时,有多次.并不是你想的,只有一次.要想只有一次,bool[num] = true不能放在if (num != 0) 中

[code="java"]System.out.println(" size:"+list.size());
for (int i = 0; i < 10; i++) {

System.out.println("第"+i+"个是:"+list.get(i));
} [/code]
size 只有9 你要输出10个肯定会报错的 汗

[code="java"]
for (int i = 0; i < 10; i++) {

System.out.println("第"+i+"个是:"+list.get(i));

}

[/code]
改为

[code="java"]
for (int i = 0; i < list.size(); i++) {

System.out.println("第"+i+"个是:"+list.get(i));

}

[/code]

if (num != 0) {
bool[num] = true;

list.add(num);

}

这个改成:
bool[num] = true;

if (num != 0) {
list.add(num);

}