public String randomNum() {
Calendar c = Calendar.getInstance();
int s = (c.get(Calendar.MONTH) * 10000)
+ (c.get(Calendar.SECOND) * 1000) + c.get(Calendar.MILLISECOND);
Random a = new Random();
a.setSeed(s);String random = a.nextFloat() + "";String finalNum = "DI" + random.substring(2, 9);
return finalNum;
}
这是我的获取随机数的方法,但是很容易报错。各位大大们帮忙改下,怎么样获取随机数里的7为而不产生重复、

解决方案 »

  1.   


    Set set=new HashSet();
    Random a=new Random();
    while(set.length<7){
    set.put(a.get(0,10));
    }具体代码实现可能忘记了,这个只是逻辑,按照这个逻辑去实现就可以了,set里面存放的是不重复的东西,所以通过判断可以实现楼主要的功能。
      

  2.   

    取a-b范围(包含a,不包含b)的整数: (int)((b-a)*rnd)+a
    所以7位随机数应该是: (long)(10000000-1000000)*rnd + 1000000 String random = String.valueOf((long)(a.nextFloat()*9000000) + 1000000);
      

  3.   

    楼上各位,Random有专门的method解决这个问题啊。 nextInt(int n), 这个method 返回值在0-n之间,包含0与n。
    所以可以这样获得7位的随机数:
    Int r = randomObject.nextInt(999999) + 1000000;
    简单利落明了!
      

  4.   

    各位,楼上我写错了!!!!不符合楼主需求。
    还是3楼runffer_yang的答案正确。
    抱歉。
      

  5.   

    Random a = new Random(10000000); 在里面传个值  这个就表示1千万才重复一次 但是这几率不可能
      

  6.   

    Random r = new Random();
    Set set = new HashSet();
    while (set.size() < 7) {
    set.add(r.nextInt(10));
    }
    Object[] obj = set.toArray();
    for (int i = 0; i < obj.length; i++) {
    System.out.print(obj[i]);
    }
      

  7.   

     nextInt(int n), 这个method 返回值在0-n之间,不包含n