Генератор случайных символов с диапазоном (A..Z, 0..9) и пунктуацией - PullRequest
9 голосов
/ 25 июня 2010

Мне нужно создать генератор случайных символов, который возвращает один символ.Символ должен находиться в пределах букв алфавита, цифр от 0 до 9 и некоторых символов, таких как.? / -.Любой пример будет оценен.

Ответы [ 9 ]

39 голосов
/ 25 июня 2010

Самое простое - сделать следующее:

  • Создать String alphabet с нужными вам символами.
  • Сказать N = alphabet.length()
  • Тогда мыможно попросить java.util.Random для int x = nextInt(N)
  • alphabet.charAt(x) случайный символ из алфавита

Вотпример:

    final String alphabet = "0123456789ABCDE";
    final int N = alphabet.length();

    Random r = new Random();

    for (int i = 0; i < 50; i++) {
        System.out.print(alphabet.charAt(r.nextInt(N)));
    }
10 голосов
/ 24 декабря 2012

См. Ссылку ниже: http://www.asciitable.com/

public static char randomSeriesForThreeCharacter() {
    Random r = new Random();
    char random_3_Char = (char) (48 + r.nextInt(47));
    return random_3_Char;
}

Теперь вы можете создать персонажа за один раз при вызове.

4 голосов
/ 25 июня 2010
  1. Выберите случайное число между [0, x), где x - количество различных символов. Надеемся, что выбор сделан равномерно и не предсказуемо: -)

  2. Теперь выберите символ, представляющий x.

  3. Profit!

Я бы начал читать Псевдослучайность и затем некоторые распространенные Генераторы псевдослучайных чисел . Конечно, ваш язык, надеюсь, уже имеет подходящую «случайную» функцию: -)

3 голосов
/ 10 января 2012

Вот код для безопасных, простых, но немного более дорогих идентификаторов сеанса.

import java.security.SecureRandom;
import java.math.BigInteger;

public final class SessionIdentifierGenerator
{

  private SecureRandom random = new SecureRandom();

  public String nextSessionId()
  {
    return new BigInteger(130, random).toString(32);
  }

}
2 голосов
/ 18 января 2012

Зачем изобретать велосипед? RandomStringUtils от Apache Commons имеет функции, для которых вы можете указать набор символов, из которого генерируются символы. Вы можете взять то, что вам нужно для вашего приложения:

http://kickjava.com/src/org/apache/commons/lang/RandomStringUtils.java.htm

1 голос
/ 05 ноября 2017

Сначала вы должны создать строку, содержащую все буквы / цифры, которые вы хотите.
Затем сделайте Random. е. г. Random rnd = new Random;
Наконец, создайте что-то, что на самом деле получает случайный символ из вашей строки, содержащей ваш алфавит.
Например,

import java.util.Random;

public class randomCharacter {
    public static void main(String[] args) {
        String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?/.,";
        Random rnd = new Random();
        char char = alphabet.charAt(rnd.nextInt(alphabet.length()));
        // do whatever you want with the character
    }
}

См. это .
Это откуда я получил эту информацию.

0 голосов
/ 12 ноября 2017

случайный набор символов com.company;

         import java.util.concurrent.ThreadLocalRandom;

         public class Main {

            public static void main(String[] args) {
            // write your code here
                char hurufBesar =randomSeriesForThreeCharacter(65,90);
                char angka = randomSeriesForThreeCharacter(48,57);
                char simbol = randomSeriesForThreeCharacter(33,47);
                char hurufKecil= randomSeriesForThreeCharacter(97,122);
                char angkaLagi = randomSeriesForThreeCharacter(48,57);

                System.out.println(hurufBesar+" "+angka+" "+simbol+" "+hurufKecil+" "+angkaLagi);
            }

            public static char randomSeriesForThreeCharacter(int min,int max) {
                int randomNumber = ThreadLocalRandom.current().nextInt(min, max + 1);
                char random_3_Char = (char) (randomNumber);
                return random_3_Char;
             }
         }
0 голосов
/ 27 ноября 2015
Random random = new Random();
int n = random.nextInt(69) + 32;
if (n > 96) {
    n += 26;
}
char c = (char) n;

Я думаю, это зависит от того, какую пунктуацию вы хотите включить, но это должно генерировать случайный символ, включая все знаки пунктуации в этой таблице ASCII.По сути, я сгенерировал случайное целое число из 32 - 96 или 123 - 126, которое затем преобразовал в символ, который дает ASCII-эквивалент этого числа.Кроме того, убедитесь, что вы import java.util.Random

0 голосов
/ 25 июня 2010

Используя простую командную строку (скрипты bash):

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 30 | xargs
t315,qeqaszwz6kxv?761rf.cj/7gc

$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 1 | xargs
f
  • cat / dev / urandom: получить случайный поток символов из ядра
  • tr: сохранить толькоchar char мы хотим
  • head: взять только первые n char
  • xargs: только для добавления '\n' char
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...