JAVA中生成指定位數隨機數的方法總結

  JAVA中生成指定位數隨機數的方法不少,下面列舉幾種比較經常使用的方法。git

 

方法1、經過Math類數組

1     public static String getRandom1(int len) {
2         int rs = (int) ((Math.random() * 9 + 1) * Math.pow(10, len - 1));
3         return String.valueOf(rs);
4     }

  該方法是經過Math.random()獲取[0.0, 1.0)的隨機數,再乘以須要的位數。這裏用乘9,再加1,而沒有用乘10的方式,是爲了防止生成的隨機數比較小,致使乘以位數後小於指定位數。app

 

方法2、經過Random類dom

1     public static String getRandom2(int len) {
2         Random r = new Random();
3         StringBuilder rs = new StringBuilder();
4         for (int i = 0; i < len; i++) {
5             rs.append(r.nextInt(10));
6         }
7         return rs.toString();
8     }

  該方法是經過Random類的nextInt(9)方法能夠直接獲取一個[0,9]的隨機整數,而後經過指定次數的循環,來拼接隨機數。Random類其實還有一些的生成隨機數的方法,有興趣能夠了解一下。ui

 

方法3、經過Random類spa

1     public static String getRandom3(int len) {
2         int digit = (int) Math.pow(10, len - 1);
3         int rs = new Random().nextInt(digit * 10);
4         if (rs < digit) {
5             rs += digit;
6         }
7         return String.valueOf(rs);
8     }

  該方法也是經過Random類,不一樣的是,經過指定隨機數的最大值,來生成指定位數的隨機整數,由於有可能位數不足,因此當小於指定位數的時候須要加上指定位數的值。舉例:要生成一個4位數的隨機值,那麼就是生成一個小於10000的隨機整數,當隨機數小於1000時,加上1000,來確保位數。code

 

方法4、經過指定數據源blog

1     public static String getRandom4(int len) {
2         String source = "0123456789";
3         Random r = new Random();
4         StringBuilder rs = new StringBuilder();
5         for (int j = 0; j < len; j++) {
6             rs.append(source.charAt(r.nextInt(10)));
7         }
8         return rs.toString();
9     }

  該方法是預設一個數據源,而後經過Random類的nextInt方法獲取到一個隨機整數,將這個整數做爲數據源數組的下標,再經過循環的方法來組成一個隨機數。這裏還能夠在數據源中補充上字母,就至關於生成帶字母的驗證碼。get

 

PS:獲取不重複的隨機值it

1     public static List<String> getDistinctRandom(int len, int num) {
2         Set<String> s = new HashSet<>();
3         while (s.size() < num) {
4             s.add(getRandom4(len));
5         }
6         return new ArrayList<>(s);
7     }

  前面幾種方法獲取指定個數的隨機數,其中是有可能有重複值的。若是想要獲取不重複的隨機值,也很簡單,獲取隨機值的方式能夠不變,只要把獲取到的隨機值都放進Set集合,直到達到須要的個數就ok了。

相關文章
相關標籤/搜索