Подтвердить что ты не робот

Как создать случайную строку из 20 символов

Возможный дубликат:
Как создать случайную строку в Java

Я хочу создать случайную строку из 20 символов без использования классов apache. Меня не волнует, является ли алфавитно-цифровым или нет. Кроме того, я собираюсь преобразовать его в массив байтов позже FYI.

Спасибо,

4b9b3361

Ответ 1

Здесь вы идете. Просто укажите символы, которые вы хотите разрешить в первой строке.

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);

Ответ 2

Я бы использовал этот подход:

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();
}

Если вы хотите получить байт [], вы можете сделать это:

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;
}

Или вы могли бы сделать это

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();
}

Ответ 3

Вы можете использовать класс java.util.Random с методом

char c = (char)(rnd.nextInt(128-32))+32 

20x, чтобы получить байты, которые вы интерпретируете как ASCII. Если у вас все в порядке с ASCII.

32 - это смещение, от которого символы можно печатать в целом.

Ответ 4

public String randomString(String chars, int length) {
  Random rand = new Random();
  StringBuilder buf = new StringBuilder();
  for (int i=0; i<length; i++) {
    buf.append(chars.charAt(rand.nextInt(chars.length())));
  }
  return buf.toString();
}