使用SecureRandom

时间:2017-07-21 20:47:11

标签: java secure-random

如何使用SecureRandom类Java生成 6 数字整数?

我正在尝试使用以下代码生成随机数:

SecureRandom secureRandom = new SecureRandom();
int secureNumber = secureRandom.nextInt();

生成任意长度的随机数,包括负数。我在SecureRandom课程中找不到任何方法来提供一系列数字。我想生成 6 随机数

4 个答案:

答案 0 :(得分:1)

只需使用数组

完成
int[] arr = new int[6];
Random rand = new SecureRandom();
for(int i= 0; i< 6 ; i++){
    // 0 to 9
    arr[i] = rand.nextInt(10);   
}

不知道你是否需要另一种类型(如果你想看看这里:How to convert int array to int?

答案 1 :(得分:1)

这将创建一个 6 随机数字的字符串。

SecureRandom test = new SecureRandom();
int result = test.nextInt(1000000);
String resultStr = result + "";
if (resultStr.length() != 6) 
    for (int x = resultStr.length(); x < 6; x++) resultStr = "0" + resultStr;
System.out.println(resultStr); // prints the 6 digit number

应该工作得很好。经过测试,它会吐出 1000 数字,并且所有数字都是 6 个数字,包括最初选择的随机数小于 100,000时的前导零

答案 2 :(得分:0)

您可以这样做:

static String generate(int len){
   SecureRandom sr = new SecureRandom();
   String result = (sr.nextInt(9)+1) +"";
   for(int i=0; i<len-2; i++) result += sr.nextInt(10);
   result += (sr.nextInt(9)+1);
   return result;
}

<强>测试

public static void main(String[] argv){
   for(int i=3; i<25; i++) System.out.println(generate(i));
}

<强>输出:

639
1617
84489
440757
9982141
28220183
734679206
1501896787
29547455245
417101844095
9997440470982
24273208689568
235051176494856
9515304245005008
73519153118911442
665598930463570609
9030671114119582966
96572353350467673335
450430466373510518561
9664395407658562145827
26651025927755496179441
421157180102739403860678

答案 3 :(得分:0)

这对我有用。

new SecureRandom().nextBytes(values);
int number = Math.abs(ByteBuffer.wrap(values).getInt());
while (number >= 1000000) {
     number /= 10;
}