shiren1118 2008-10-10 10:54
浏览 257
已采纳

随机数异常

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));
    }


}

}
这个就不会·····

什么原因?如何解决

  • 写回答

4条回答 默认 最新

  • chengxing6666 2008-10-10 11:48
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么