int[] arr=new int[10];
    int a;
   
    random r=new random();    for(int i=0;i<10;i++)
   {    a=r.NextDouble()%9999;    arr[i]=a;
   }    请问怎么才能让arr[]数组保存1000-9999之间的数字啊?
     
    请大虾们指教 谢谢!!!

解决方案 »

  1.   

    至少需要定义成double类型的数组吧
    Random r = new Random();
    dou[i] = r.nextDouble()*9999;
      

  2.   


      噢! 为什么要定义double数组了?
      

  3.   

    1000~9999,其实就是1到8999的范围加1000
    random()*8999+1000
      

  4.   

    根据你想要的结果,我想 1000 和 9999 也包括在内:int[] arr = new int[10];
    for(int i = 0, k = 9999 - 1000 + 1; i < arr.length; i++) {
        arr[i] = ran.nextInt(k) + 1000;
    }
      

  5.   

    ran.nextInt(k) 表示生成 0~k - 1 之间的数(含 0 和 k - 1),因此要 1000~9999,那就是 9999 - 1000 + 1 = 9000,使用 nextInt(9000) 随机的范围为 0~8999,只要将这个值加上 1000 就能满足要求了。
      

  6.   

    生成 n~m 之间(含 n 和 m)的随机整数,可以写为:int n = ran.nextInt(m - n + 1) + n;
      

  7.   

    用Math.random()吧,这个表示[0,1)之间的数的
    那么你的就应该这么写  int[] arr=new int[10];
      for(int i=0;i<10;i++) {
         arr[i] = (int)(Math.random()*8999)+ 1000;
      }
      

  8.   

    int x=0;
    while(true){
        x=ran.nextInt(10000);
        if(x>1000&&x<9999){
          break;
         }
     }
    原理:利用循环,判定x的值,如果符号你的条件,则终止循环即可
      

  9.   

    刚好最近写的 public static String randomNumStrValueBetwn(int min,int max){
    Random r = new Random(System.nanoTime());
    StringBuffer st = new StringBuffer();
    int k=0,cha = max - min;
    k = (Math.abs(r.nextInt())%cha)+min;
    while(k<min){
    k +=cha;
    }
    st.append(k);
    return st.toString();
    }
    while部分可以忽略
      

  10.   

    用这个吧
    public static int randomNumValueBetwn(int min,int max){
    Random r = new Random(System.nanoTime());
    StringBuffer st = new StringBuffer();
    int k=0,cha = max - min;
    return (Math.abs(r.nextInt())%cha)+min;
    }
      

  11.   

    这个是吧没用的代码都去掉的
    public static int randomNumStrValueBetwn(int min,int max){
    Random r = new Random(System.nanoTime());
    int cha = max - min;
    return (Math.abs(r.nextInt())%cha)+min;
    }
      

  12.   


    int[] arr = new int[10];
    for(int i = 0, ; i < arr.length; i++) {
        arr[i] = ran.nextInt(9000) + 1000;// ran.nextInt(X)生成的数属于区间[0,X);
    }
      

  13.   

    或者用for循环,中间用一个i--,再用for循环输出