如何生成20个字符的随机字符串

nov*_*rmr 38 java

可能重复:
如何在Java中生成随机字符串

我想生成一个20个字符的随机字符串,而不使用apache类.我真的不在乎是否是字母数字.另外,我将在以后的FYI中将其转换为字节数组.

谢谢,

Whi*_*g34 86

干得好.只需在第一行指定要允许的字符.

char[] chars = "abcdefghijklmnopqrstuvwxyz".toCharArray();
StringBuilder sb = new StringBuilder(20);
Random random = new Random();
for (int i = 0; i < 20; i++) {
    char c = chars[random.nextInt(chars.length)];
    sb.append(c);
}
String output = sb.toString();
System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

  • @ WhiteFang34是的..光滑.我将随机对象放在循环的一边,现在结果是完美的.100个randoms nos.是我得到的.:)和白方是一本很棒的书;)..我推荐野外的电话.只是你还没看过它.. (2认同)

cor*_*iKa 11

我会用这种方法:

String randomString(final int length) {
    Random r = new Random(); // perhaps make it a class variable so you don't make a new one every time
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < length; i++) {
        char c = (char)(r.nextInt((int)(Character.MAX_VALUE)));
        sb.append(c);
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

如果你想要一个byte [],你可以这样做:

byte[] randomByteString(final int length) {
    Random r = new Random();
    byte[] result = new byte[length];
    for(int i = 0; i < length; i++) {
        result[i] = r.nextByte();
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做

byte[] randomByteString(final int length) {
    Random r = new Random();
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < length; i++) {
        char c = (char)(r.nextInt((int)(Character.MAX_VALUE)));
        sb.append(c);
    }
    return sb.toString().getBytes();
}
Run Code Online (Sandbox Code Playgroud)


use*_*own 5

您可以将java.util.Random类与方法一起使用

char c = (char)(rnd.nextInt(128-32))+32 
Run Code Online (Sandbox Code Playgroud)

20x获取字节,您将其解释为ASCII.如果你对ASCII很好.

32是偏移,一般来说字符是可打印的.