Одной из распространенных задач в программировании является генерация случайных строк. Как правило, это может быть необходимо для создания уникальных идентификаторов, паролей, тестовых данных и т.п.
Рассмотрим пример, где используется метод randomString()
, создающий случайную строку на основе переданного в него числа.
public static String randomString(int i) { Random ran = new Random(i); StringBuilder sb = new StringBuilder(); while (true) { int k = ran.nextInt(27); if (k == 0) break; sb.append((char)('`' + k)); } return sb.toString(); }
Примечательно, что при определенных входных данных этот метод выводит конкретные строки. Например, следующий код будет всегда выводить «hello world».
System.out.println(randomString(-229985452) + " " + randomString(-147909649));
Это происходит из-за того, что метод randomString()
использует входное значение в качестве «семени» для генератора случайных чисел.
В классе Random
в Java, если использовать одно и то же значение для инициализации, будут генерироваться одни и те же «случайные» числа. В данном случае, числа -229985452 и -147909649 приводят к генерации последовательности случайных чисел, которые при преобразовании в символы формируют слова «hello» и «world» соответственно.
Важно помнить, что если вам нужно генерировать действительно случайные числа или строки, следует избегать использования фиксированных семян для генератора случайных чисел.
Добавить комментарий