Генератор случайных букв java

Содержание
  1. Есть ли возможность генерировать случайный символ в Java?
  2. ОТВЕТЫ
  3. Ответ 1
  4. Ответ 2
  5. Ответ 3
  6. Ответ 4
  7. Ответ 5
  8. Ответ 6
  9. Ответ 7
  10. Ответ 8
  11. Ответ 9
  12. Ответ 10
  13. Ответ 11
  14. Ответ 12
  15. Ответ 13
  16. Ответ 14
  17. Ответ 15
  18. Ответ 16
  19. Ответ 17
  20. Java – Генерация Случайной Строки
  21. 1. Сгенерируйте Случайную Неограниченную Строку С Помощью Простой Java
  22. Дальнейшее чтение:
  23. Эффективный калькулятор частоты слов на Java
  24. Java – Случайные длинные, Плавающие, целочисленные и двойные
  25. Руководство по пулу строк Java
  26. 2. Сгенерируйте Случайную Ограниченную Строку С Помощью Простой Java
  27. 3. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8
  28. 4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8
  29. 5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang
  30. 6. Создайте Алфавитную Строку С Помощью Apache Commons Lang
  31. 7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang
  32. 8. Заключение
  33. Читайте ещё по теме:
  34. Java – generate random String
  35. Using simple java code with Random
  36. Using Apache Common lang
  37. Create AlphaNumericString

Есть ли возможность генерировать случайный символ в Java?

Есть ли у Java какие-либо функции для генерации случайных символов или строк? Или нужно просто выбрать случайное целое число и преобразовать этот целочисленный код ascii в символ?

ОТВЕТЫ

Ответ 1

Существует много способов сделать это, но да, это включает в себя создание случайного int (используя, например, java.util.Random.nextInt ), а затем используя это для сопоставления с char . Если у вас есть определенный алфавит, то что-то вроде этого отличное:

 import java.util.Random; //. Random r = new Random(); String alphabet = "123xyz"; for (int i = 0; i < 50; i++) < System.out.println(alphabet.charAt(r.nextInt(alphabet.length()))); >// prints 50 random characters from alphabet 

Отметим, что java.util.Random на самом деле является генератором псевдослучайных чисел на основе довольно слабой линейная конгруэнтная формула. Вы упомянули о необходимости криптографии; вы можете изучить использование более сильного криптографически защищенного генератора псевдослучайных чисел в этом случае (например, java.security.SecureRandom ).

Читайте также:  Работа с time дата php

Ответ 2

Чтобы создать случайный char в a-z:

Random r = new Random(); char c = (char)(r.nextInt(26) + 'a'); 

Ответ 3

Вы также можете использовать RandomStringUtils из проекта Apache Commons:

RandomStringUtils.randomAlphabetic(stringLength); 

Ответ 4

private static char rndChar () < int rnd = (int) (Math.random() * 52); // or use Random or whatever char base = (rnd

Генерирует значения в диапазонах a-z, A-Z.

Ответ 5

В соответствии с 97 значением ascii малого "a".

public static char randomSeriesForThreeCharacter()

в выше 3 числа для a, b, c или d, и если u хочет, чтобы все символы, такие как a-z, вы заменяли 3 числа на 25.

Ответ 6

String abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char letter = abc.charAt(rd.nextInt(abc.length())); 

Ответ 7

Чтобы создать случайную строку, используйте метод anyString.

Вы можете создавать строки из более ограниченного набора символов или с ограничениями минимального/максимального размера.

Обычно вы запускаете тесты с несколькими значениями:

@Test public void myTest() < for (Listany : someLists(integers())) < //A test executed with integer lists >> 

Ответ 8

Iterable chars = $('a', 'z'); // 'a', 'b', c, d .. z 

данный chars вы можете создать "перетасованный" диапазон символов:

Iterable shuffledChars = $('a', 'z').shuffle(); 

затем беря первые символы n , вы получите случайную строку длины n . Окончательный код просто:

public String randomString(int n)

NB: условие n > 0 перечеркнуто slice

как правильно указал Стив, randomString использует не более одного раза каждую букву. Как обходной путь вы можете повторить алфавит m раз перед вызовом shuffle :

public String randomStringWithRepetitions(int n)

или просто укажите свой алфавит как String :

public String randomStringFromAlphabet(String alphabet, int n) < return $(alphabet).shuffle().slice(n).toString(); >String s = randomStringFromAlphabet("00001111", 4); 

Ответ 9

public static String generateCode()

Ответ 10

У тебя это есть. Просто создайте случайные коды ASCII самостоятельно. Для чего вам это нужно?

Ответ 11

Взгляните на класс Java Randomizer. Я думаю, вы можете рандомизировать символ, используя метод randomize (char []).

Ответ 12

Ответ Polygenelubricants также является хорошим решением, если вы хотите генерировать только шестнадцатеричные значения:

/** A list of all valid hexadecimal characters. */ private static char[] HEX_VALUES = < '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F' >; /** Random number generator to be used to create random chars. */ private static Random RANDOM = new SecureRandom(); /** * Creates a number of random hexadecimal characters. * * @param nValues the amount of characters to generate * * @return an array containing nValues hex chars */ public static char[] createRandomHexValues(int nValues) < char[] ret = new char[nValues]; for (int i = 0; i < nValues; i++) < ret[i] = HEX_VALUES[RANDOM.nextInt(HEX_VALUES.length)]; >return ret; > 

Ответ 13

Мое предложение для генерации случайной строки со смешанным случаем типа: "DthJwMvsTyu".
Этот алгоритм основан на кодах ASCII букв, когда его коды az (от 97 до 122) и AZ (от 65 до 90) отличаются в 5-м бите (2 ^ 5 или 1

random.nextInt(2) : результат равен 0 или 1.

Верхний A равен 65, а нижний a равен 97. Разница только на 5-м бите (32), поэтому для генерации случайного символа мы делаем двоичный код OR '|' случайный charCaseBit (0 или 32) и случайный код от A до Z (от 65 до 90).

public String fastestRandomStringWithMixedCase(int length) < Random random = new Random(); final int alphabetLength = 'Z' - 'A' + 1; StringBuilder result = new StringBuilder(length); while (result.length() < length) < final char charCaseBit = (char) (random.nextInt(2) return result.toString(); > 

Ответ 14

Вот код для генерации случайного буквенно-цифрового кода. Сначала вы должны объявить строку разрешенных символов, которую вы хотите включить в случайное число, а также определить максимальную длину строки.

 SecureRandom secureRandom = new SecureRandom(); String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; StringBuilder generatedString= new StringBuilder(); for (int i = 0; i

Используйте метод toString(), чтобы получить String из StringBuilder

Ответ 15

Это простое, но полезное открытие. Он определяет класс с именем RandomCharacter с 5 перегруженными методами для случайного получения определенного типа символов. Вы можете использовать эти методы в ваших будущих проектах.

 public class RandomCharacter < /** Generate a random character between ch1 and ch2 */ public static char getRandomCharacter(char ch1, char ch2) < return (char) (ch1 + Math.random() * (ch2 - ch1 + 1)); >/** Generate a random lowercase letter */ public static char getRandomLowerCaseLetter() < return getRandomCharacter('a', 'z'); >/** Generate a random uppercase letter */ public static char getRandomUpperCaseLetter() < return getRandomCharacter('A', 'Z'); >/** Generate a random digit character */ public static char getRandomDigitCharacter() < return getRandomCharacter('0', '9'); >/** Generate a random character */ public static char getRandomCharacter() < return getRandomCharacter('\u0000', '\uFFFF'); >> 

Чтобы продемонстрировать, как это работает, давайте взглянем на следующую тестовую программу, отображающую 175 случайных строчных букв.

public class TestRandomCharacter < /** Main method */ public static void main(String[] args) < final int NUMBER_OF_CHARS = 175; final int CHARS_PER_LINE = 25; // Print random characters between 'a' and 'z', 25 chars per line for (int i = 0; i < NUMBER_OF_CHARS; i++) < char ch = RandomCharacter.getRandomLowerCaseLetter(); if ((i + 1) % CHARS_PER_LINE == 0) System.out.println(ch); else System.out.print(ch); >> > 

enter image description here

если вы запустите еще раз:

enter image description here

Я отдаю должное Ю.Даниэлю Лянгу за его книгу " Введение в программирование на Java, полная версия", 10-е издание, где я привел эти знания.

Ответ 16

Если вы не возражаете добавить новую библиотеку в свой код, вы можете генерировать символы с помощью MockNeat (отказ от ответственности: я один авторов).

MockNeat mock = MockNeat.threadLocal(); Character chr = mock.chars().val(); Character lowerLetter = mock.chars().lowerLetters().val(); Character upperLetter = mock.chars().upperLetters().val(); Character digit = mock.chars().digits().val(); Character hex = mock.chars().hex().val(); 

Ответ 17

 Random randomGenerator = new Random(); int i = randomGenerator.nextInt(256); System.out.println((char)i); 

Позаботьтесь о том, что вы хотите, считая, что вы считаете "0", "1", "2".. как символы.

Источник

Java – Генерация Случайной Строки

Генерируйте ограниченные и неограниченные случайные строки, используя простую Java и библиотеку Apache Commons Lang.

В этом уроке мы покажем, как сгенерировать случайную строку в Java – сначала с помощью стандартных библиотек Java, затем с помощью варианта Java 8 и, наконец, с помощью библиотеки Apache Commons Lang .

Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.

1. Сгенерируйте Случайную Неограниченную Строку С Помощью Простой Java

Давайте начнем с простого и сгенерируем случайную Строку , ограниченную 7 символами:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() < byte[] array = new byte[7]; // length is bounded by 7 new Random().nextBytes(array); String generatedString = new String(array, Charset.forName("UTF-8")); System.out.println(generatedString); >

Имейте в виду, что новая строка не будет чем-то отдаленно буквенно-цифровым.

Дальнейшее чтение:

Эффективный калькулятор частоты слов на Java

Java – Случайные длинные, Плавающие, целочисленные и двойные

Руководство по пулу строк Java

2. Сгенерируйте Случайную Ограниченную Строку С Помощью Простой Java

Далее – давайте рассмотрим создание более ограниченной случайной строки; мы собираемся сгенерировать случайную Строку , используя строчные буквы алфавита и заданную длину:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() < int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); StringBuilder buffer = new StringBuilder(targetStringLength); for (int i = 0; i < targetStringLength; i++) < int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1)); buffer.append((char) randomLimitedInt); >String generatedString = buffer.toString(); System.out.println(generatedString); >

3. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8

Теперь давайте использовать Random.ints – добавлено в JDK 8 – для создания алфавитной строки:

@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() < int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >

4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8

А затем мы можем расширить наш набор символов, чтобы получить буквенно-цифровую строку :

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() < int leftLimit = 48; // numeral '0' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .filter(i ->(i = 65) && (i = 97)) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >

Обратите внимание на использование метода filter выше, чтобы исключить символы Юникода между 65 и 90 – чтобы избежать символов вне диапазона.

5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang

Библиотека Commons Lang от Apache очень помогает при генерации случайных строк. Давайте посмотрим на создание ограниченной строки с использованием только букв :

@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect()

Поэтому – вместо всего низкоуровневого кода в примере Java-это делается с помощью простой однострочной строки.

6. Создайте Алфавитную Строку С Помощью Apache Commons Lang

Еще один очень простой пример – на этот раз ограниченная Строка только с буквенными символами, но без передачи логических флагов в API:

@Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect()

7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang

И, наконец, – та же случайная ограниченная Строка , но на этот раз – числовая:

@Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect()

И вот у нас есть это – создание ограниченных и неограниченных строк с помощью простой Java, варианта Java 8 или библиотеки Apache Commons.

8. Заключение

С помощью различных методов реализации мы смогли генерировать связанные и несвязанные строки, используя обычную Java, вариант Java 8 или библиотеку Apache Commons.

В этих примерах Java мы использовали java.util.Random , но один момент, о котором стоит упомянуть, заключается в том, что он не является криптографически безопасным. Рассмотрите возможность использования java.security.SecureRandom вместо этого для приложений, чувствительных к безопасности.

Реализацию всех этих примеров и фрагментов можно найти в проекте GitHub . Это проект на основе Maven, поэтому его должно быть легко импортировать и запускать.

Читайте ещё по теме:

Источник

Java – generate random String

In this tutorial, we will see how to generate random String in java.
There are many ways to generate random String.Let’s explore some of ways to generate random String.

Using simple java code with Random

You can use SecureRandom class to generate random String for you.
Let’s understand with the help of example.

System . out . println ( "Generating String of length 10: " + rsgm . generateRandomStringUsingSecureRandom ( 10 ) ) ;

System . out . println ( "Generating String of length 10: " + rsgm . generateRandomStringUsingSecureRandom ( 10 ) ) ;

System . out . println ( "Generating String of length 10: " + rsgm . generateRandomStringUsingSecureRandom ( 10 ) ) ;

System . out . println ( "Generating String of length 8: " + rsgm . generateRandomStringUsingSecureRandom ( 8 ) ) ;

System . out . println ( "Generating String of length 8: " + rsgm . generateRandomStringUsingSecureRandom ( 8 ) ) ;

System . out . println ( "Generating String of length 8: " + rsgm . generateRandomStringUsingSecureRandom ( 8 ) ) ;

System . out . println ( "Generating String of length 7: " + rsgm . generateRandomStringUsingSecureRandom ( 7 ) ) ;

System . out . println ( "Generating String of length 7: " + rsgm . generateRandomStringUsingSecureRandom ( 7 ) ) ;

System . out . println ( "Generating String of length 7: " + rsgm . generateRandomStringUsingSecureRandom ( 7 ) ) ;

Generating String of length 10: Hz0hHRcO6X
Generating String of length 10: wSnjx6HNlv
Generating String of length 10: 4Wg9Iww0Is
Generating String of length 8: EdJmSrfC
Generating String of length 8: dAifHyQG
Generating String of length 8: HNnxieWg
Generating String of length 7: hQrqQ2L
Generating String of length 7: 0BWBtYI
Generating String of length 7: 3WStHON

Using Apache Common lang

You can use Apache Common lang to generate random String. It is quite easy to generate random String as you can use straight forward APIs to create random String.

Create AlphaNumericString

You can use RandomStringUtils.randomAlphanumeric method to generate alphanumeric random strn=ing.

Источник

Оцените статью