一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java隨機數生產算法實例

java隨機數生產算法實例

2021-01-15 13:43shindoyang Java教程

下面小編就為大家帶來一篇java隨機數生產算法實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

java提供了Math.random()函數,返回一個double類型的隨機數,也有util包里的Random類,可以生成double,int,float,long,bytes等隨機數。

但有些業務需求,往往需要對這些方法做一下封裝。比如用固定因子生成32位的3DES算法key值。

下面提供一些封裝的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package test;
 
import java.util.Random;
 
public class RandomUtil {
 
  public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  public static final String NUMBERCHAR = "0123456789";
 
  /**
   * 返回一個定長的帶因子的固定的隨機字符串(只包含大小寫字母、數字)
   *
   * @param length
   *      隨機字符串長度
   * @return 隨機字符串
   */
  public static String generateStringByKey(int length, int channel) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random(channel);
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
    }
    return sb.toString();
  }
 
  /**
   * 返回一個定長的隨機字符串(只包含大小寫字母、數字)
   *
   * @param length
   *      隨機字符串長度
   * @return 隨機字符串
   */
  public static String generateString(int length) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random();
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
    }
    return sb.toString();
  }
 
  /**
   * 返回一個定長的隨機純字母字符串(只包含大小寫字母)
   *
   * @param length
   *      隨機字符串長度
   * @return 隨機字符串
   */
  public static String generateMixString(int length) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random();
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));
    }
    return sb.toString();
  }
 
  /**
   * 返回一個定長的隨機純大寫字母字符串(只包含大小寫字母)
   *
   * @param length
   *      隨機字符串長度
   * @return 隨機字符串
   */
  public static String generateLowerString(int length) {
    return generateMixString(length).toLowerCase();
  }
 
  /**
   * 返回一個定長的隨機純小寫字母字符串(只包含大小寫字母)
   *
   * @param length
   *      隨機字符串長度
   * @return 隨機字符串
   */
  public static String generateUpperString(int length) {
    return generateMixString(length).toUpperCase();
  }
 
  /**
   * 生成一個定長的純0字符串
   *
   * @param length
   *      字符串長度
   * @return 純0字符串
   */
  public static String generateZeroString(int length) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < length; i++) {
      sb.append('0');
    }
    return sb.toString();
  }
 
  /**
   * 根據數字生成一個定長的字符串,長度不夠前面補0
   *
   * @param num
   *      數字
   * @param fixdlenth
   *      字符串長度
   * @return 定長的字符串
   */
  public static String toFixdLengthString(long num, int fixdlenth) {
    StringBuffer sb = new StringBuffer();
    String strNum = String.valueOf(num);
    if (fixdlenth - strNum.length() >= 0) {
      sb.append(generateZeroString(fixdlenth - strNum.length()));
    } else {
      throw new RuntimeException("將數字" + num + "轉化為長度為" + fixdlenth + "的字符串發生異常!");
    }
    sb.append(strNum);
    return sb.toString();
  }
 
  /**
   * 每次生成的len位數都不相同
   *
   * @param param
   * @return 定長的數字
   */
  public static int getNotSimple(int[] param, int len) {
    Random rand = new Random();
    for (int i = param.length; i > 1; i--) {
      int index = rand.nextInt(i);
      int tmp = param[index];
      param[index] = param[i - 1];
      param[i - 1] = tmp;
    }
    int result = 0;
    for (int i = 0; i < len; i++) {
      result = result * 10 + param[i];
    }
    return result;
  }
 
  public static void main(String[] args) {
    int channel = 555555;// 測試因子比生產因子少1
    System.out.println("返回一個定長的帶因子的固定的隨機字符串(只包含大小寫字母、數字):" + generateStringByKey(32, channel));
    System.out.println("返回一個定長的隨機字符串(只包含大小寫字母、數字):" + generateString(32));
    System.out.println("返回一個定長的隨機純字母字符串(只包含大小寫字母):" + generateMixString(10));
    System.out.println("返回一個定長的隨機純大寫字母字符串(只包含大小寫字母):" + generateLowerString(10));
    System.out.println("返回一個定長的隨機純小寫字母字符串(只包含大小寫字母):" + generateUpperString(10));
    System.out.println("生成一個定長的純0字符串:" + generateZeroString(10));
    System.out.println("根據數字生成一個定長的字符串,長度不夠前面補0:" + toFixdLengthString(123, 10));
    int[] in = { 1, 2, 3, 4, 5, 6, 7 };
    System.out.println("每次生成的len位數都不相同:" + getNotSimple(in, 3));
  }
}

運行效果如下:

java隨機數生產算法實例

以上這篇java隨機數生產算法實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/shindo/p/5995849.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99热碰 | 国产青青操 | 久草在线福利视频在线播放 | 搡60一70岁的老女人小说 | 日韩精品久久不卡中文字幕 | 高贵女王调奴vk | 九九热视频免费 | 亚洲欧美精品一区二区 | 日韩精品亚洲专区在线影视 | 欧美国产精品久久 | 亚洲国产精品第一区二区三区 | 免费观看无人区完整版 | 息与子中文字幕完整在线 | 亚洲福利天堂网福利在线观看 | 欧美日韩中文国产一区二区三区 | 日韩国产成人资源精品视频 | 成人福利网站含羞草 | 欧美日韩精品一区二区三区高清视频 | 2022国产麻豆剧传媒古装 | 亚洲乱码一区二区三区国产精品 | 日本中文字幕一区二区三区不卡 | 美女大逼逼 | 为什么丈夫插我我却喜欢被打着插 | 日日碰日日操 | 久久亚洲一级α片 | 精品国产日韩一区三区 | 欧美精选视频 | 91精品免费国产高清在线 | h肉动漫在线视频无修无遮挡 | 国产成人精选免费视频 | 国产精品女同久久免费观看 | 人妖欧美一区二区三区四区 | 成人在线一区二区 | 四虎4hu永久免费国产精品 | 日本xxoo动图网站欧美 | 国产成人在线综合 | 深夜在线观看网站 | 污到湿的爽文免费阅读 | 国产成人精品免费久久久久 | 精品无人区麻豆乱码1区2 | 日朝欧美亚洲精品 |