Генерация случайных букв и цифр вместе - PullRequest
3 голосов
/ 19 марта 2010

Генерация 6 символов: первый символ случайным образом генерируется из алфавитов с нечетным порядком в списке алфавитов (A, C, E,…, Y), второй символ случайным образом генерируется из алфавитов с четным порядком в списке алфавитов (B, D, F,…, Z) третий символ генерируется случайным образом из списка алфавитов (от A до Z), каждая из трех цифр генерируется случайным образом от 1 до 9.

Ответы [ 10 ]

3 голосов
/ 19 марта 2010

Это домашняя работа? Если это так, пожалуйста, пометьте свой вопрос соответствующим образом.

Вот подсказка: буквы и цифры - это все символы, которые вы можете хранить в массиве.

1 голос
/ 19 марта 2010

Не уверен, если это домашнее задание (похоже, оно есть), поэтому я постараюсь указать вам правильное направление возможного подхода:

  • Напомним, что случайное целое число может бытьлюбое целое число X между двумя другими указанными целыми числами Y и Z.
  • Как перейти от случайного числа к случайному символу CHARacter?
  • Как можно взять случайное число от 0 до 13, ипревратить это в четное число от 0 до 26?Нечетное число?
  • Как вы можете использовать эти идеи / концепции в своих интересах для ответа на этот вопрос?
1 голос
/ 19 марта 2010

используя мою библиотеку доллар просто:

@Test
public void generateRandomString() {
    String string = $('a', 'z').shuffle().slice(3).join() + // take 3 random letters
                    $('0', '9').shuffle().slice(3).join();  // take 3 random digits
    assertThat(string.length(), is(6));
}
1 голос
/ 19 марта 2010

В Java вы можете делать арифметику. Итак

'A' + RNG.nextInt(26);

вернет вам случайную букву между «A» и «Z», где RNG является экземпляром java.util.Random.

Чтобы построить строку эффективно. Используйте StringBuilder

0 голосов
/ 28 августа 2012

Попробуйте с xeger и brics автоматом .

import nl.flotsam.xeger.Xeger;
import dk.brics.automaton.Automaton;

public class RandomizeString{
    public String generateRandomString(){
        String regex = "[ACEGIKMOQSUWY][BDFHJLNPRTVXZ][A-Z][0-9]{3}";
        Xeger generator = new Xeger(regex);
        String result = generator.generate();
        return result;
    }
}

чтобы понять больше, изучите регулярные выражения.

0 голосов
/ 19 марта 2010

Вы можете взглянуть на RandomStringUtils или хотя бы на его исходный код.

0 голосов
/ 19 марта 2010

Я хочу сгенерировать 6 случайных символов, включая 3 случайных буквы, за которыми следуют 3 случайных числа, но я могу генерировать только буквы или цифры одновременно.

char a = randomLetter();
char b = randomLetter();
char c = randomLetter();

int x = randomNumber();
int y = randomNumber();
int z = randomNumber();

String result = new String()+a+b+c+x+y+z;
0 голосов
/ 19 марта 2010

Некоторые основные вещи, которые вы можете использовать:

  • массив всех 26 символов в алфавите и,
  • 1 или 2 экземпляра генератора случайных чисел.
0 голосов
/ 19 марта 2010

Создайте набор чисел в диапазоне от 0 до 61 (есть 61 буквы для верхней и нижней, плюс цифры) и сопоставьте каждую из них с [0-9a-zA-Z], затем объедините все вместе.

0 голосов
/ 19 марта 2010

используйте функцию генератора случайных чисел, чтобы сгенерировать число в диапазоне [0,26), добавить к нему значение (int) 'a' и привести результат обратно к символу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...