首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

获取18位的不会反复的随机数,(0-9正整数的数字

2012-12-14 
获取18位的不会重复的随机数,(0-9正整数的数字如题,想通过一个方法获取一个18位的不会重复的随机数(0-9正

获取18位的不会重复的随机数,(0-9正整数的数字
如题,想通过一个方法获取一个18位的不会重复的随机数(0-9正整数的数字),大家有没有直接获取的方法,借来一用~~
[最优解释]

public static String getRandomString(int length) {   
      length = length < 0 ? -length : length;        
      char[] chs = new char[length];       
  Random ran = new Random();        
 for(int i = 0; i < chs.length; i++) {          
   chs[i] = (char)(ran.nextInt(10) + '0');     
    }        
 return new String(chs);     
}

生成过的随机数放入一个HashSet,生成随机数的时候,调用上面的方法,并从这个HashSet里面判断是否已存在,如果存在,则再调用上面的方法生成随机数
[其他解释]
基本上就几种套路:
1、预先生成的伪随机数,比如预先生成 10W 个顺序数,然后再将其打乱后依次读取;
2、记录所有已生成,防止重复;这个对存储有较高开销要求;
3、用不重复数经过运算得到不重复的伪随机数,比如最简单就是9位流水号+9位随机数,然后间隔着混排。
[其他解释]
什么叫不会重复是刚生成与现在生成的不重复呢还是永远不重复。如果是永远不重复是不可能的因为18位数字的排列
组合是有限的。
[其他解释]
用时间格式化,这样生成的数字就不会重复了.
[其他解释]
000000000000000001
这样的算不?
[其他解释]
引用:
什么叫不会重复是刚生成与现在生成的不重复呢还是永远不重复。如果是永远不重复是不可能的因为18位数字的排列
组合是有限的。



就是跟生成过的18位数的不同,当然也有限制比如10000000条不同。
跟手机号密码似地
[其他解释]
如果 是每天 生成的 随机数不同的话, 可以  用 当天 的 年月日时分秒(yyyyMMddHHmmss)加上其他就行了吧。。。(比如操作人的Id),进一步判断。。。

热点排行