int n =(int)(Math.random()*10000000)
if(n<10000000)
  n += (int)(Math.random()*10)*1000000这样可以吗?

解决方案 »

  1.   

    不明白楼主的意思,楼主要产生哪样的?
    不足的前面补0,
    还是要产生几位数的,如果是这样,可以这么做啊:
    int n =100+(int)(Math.random()*900)
      

  2.   

    int n = (int) (Math.random() * 10000000);
    if (n < 1000000)
    n += (int) ((Math.random() * 9) * 1000000) + 1000000;
    这样可以
      

  3.   

    楼上 eureka0891() 说得比较好
    int n = (int) (Math.random() * 9000000) + 1000000;
      

  4.   

    其实最开始需要固定位数,随机,不重复的数。估计实现起来比较复杂。现在我用for循环产生不重复的数,然后加随机函数。
    结果出现了有的数据位数 少两位或一位 不等。是不是随机数中有00这样的数,就当0看了?我先试试上面大家的方法。
      

  5.   

    int[] a={0,1,2,3,4,5,6,7,8,9};
    然后用 a[index];
    里面那个index来int index=(int)(Math.random()*10)
      

  6.   

    整数表示的时候,前面的0是不显示的,除非用String
      

  7.   

    int[] a={0,1,2,3,4,5,6,7,8,9};
    然后用 a[index];
    里面那个index来 int index=(int)(Math.random()*10)?
    望详解。用这个方法可以生成不重复的数吗?我也是最后变成String,再写入数据库的。
      

  8.   

    你具体实现什么功能?
    (拿10个数字做例子)
    是不是要将1-10这10个数字随机的添到一个元素个数为10的数组中,
    int a [] = { 4, 3, 7, 5, 1, 0, 2, 9 ,8, 6 } 实现这个样子的结果
      

  9.   

    直接到数据库里了。我用的jdbc.
    我用了循环产生百万的数据。
    //舔加数据
    PreparedStatement pstmt=con.prepareStatement("insert into id values(?)");
     int a,b,c,d,e,f;
     for(a=0;a<10;a++){
     for(b=0;b<10;b++){
    for(c=0;c<10;c++){
    for(d=0;d<10;d++){
    for(e=0;e<10;e++){
                                             fro(f=0;f<10;f++){     
                                                        
       int n =100000000+(int)(Math.random()*900000000);
        String sn =n+"01"+a+b+c+d+e+f;
        pstmt.setString(1,id);
        pstmt.execute();
                }
      }         
     }
    }
       }
    }
        out.println("添加数据成功");
        pstmt.close();
        con.close();
        }
    方法太笨了。循环的时候能随机产生数据,不重复,位数固定,写一个这样的函数,思路是什么?
      

  10.   

    public String getRandom()
    {
    String strInt = "";
    Integer i = new Integer((int)(Math.random() * 100000000));
    strInt = String.valueOf(i);
    if (strInt.length()!=8)
    {
    return getRandom();
    }
    else
    {
    return strInt;
    }
    }
      

  11.   

    int n = (int) (Math.random() * 10000000);
    if (n < 1000000)
    n += (int) ((Math.random() * 9) * 1000000) + 1000000;
    这样可以
      

  12.   

    我已经用上边的循环+random()函数把数据出来了。希望大家讨论出 能写出个随机函数 每次循环出来的数: 位数固定,随机生成,不重复的数据。应该是相当于一个 简单数据生成工具类东西吧~。
      

  13.   

    String[] a= { "4","3","7","5","1","0","2","9","8","6" } ;
    这样用小标index来random
    搞成String然后存数据库,设置这个key,不就会存入重复了
      

  14.   

    int n =(int)(Math.random()*10000000);
    if(n<1000000){
       n += 1000000;
    }
    肯定是固定位数了,不知道是否合用
      

  15.   

    可以看看这个类:
       org.apache.commons.lang.RandomStringUtils
      

  16.   

    char[] num={'0','1','2','3','4','5','6','7','8','9'};for(int i=0;i<10;i++){
       int rIndex=(int)(Math.random()*10);
       char temp=num[i];
       num[i]=num[rIndex];
       num[rIndex]=temp;
    }之后从把char[]-->String,取出前N位,就是N位的随机数,而且各位各不相同.
      

  17.   

    <%                    /* 利用Random()方法(函数)产生3位的随机代码,使得用户密码更安全 */
                        int randomIndex = -1;
                        int i = -1;
                        String randomID = "";
                        char[] randomElement =
                          {
                           '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h',
                           'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
                          };        // 定义一个一维密码字典,用来产生随机代码                    for(i = 0;i < 3;i++)
                          {
                           /* 利用random()方法(函数)产生一个随机的整型数,用来确定字典数组的对应元素 */
                           randomIndex = ((new Double(Math.random() * 998)).intValue()) % 36;
                           randomID = String.valueOf(randomElement[randomIndex]) + randomID;
                          }
    %>
    for里的3改一下就行.想得几位就几位.最后out.print(randomID)就是你得的随机数了.