WedX - журнал о программировании и компьютерных науках

Создание случайной строки только с определенными буквами и определенной длины

Итак, я хочу сгенерировать случайную строку, но хочу, чтобы строкой были только определенные символы (только те, которые можно использовать в имени файла для размещения, например, www.example.com/HERE.EXTENTION).

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

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

07.07.2013

Ответы:


1

Используйте этот быстрый метод:

String genRand(int length){
   Random rand=new Random();
   String possibleLetters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.";   
   StringBuilder sb = new StringBuilder(length);
   for(int i = 0; i < length; i++) 
      sb.append(possibleLetters.charAt(rand.nextInt(possibleLetters.length())));
   return sb.toString();
}

Отредактируйте possibleLetters, чтобы включить нужные символы. Обратите внимание, что символы \ и символы новой строки должны быть экранированы.

07.07.2013
  • +1 за пример кода, но AB следует заменить на possibleLetters. 07.07.2013
  • @JBNizet Извините, я выкопал это из старого кода, и при переименовании переменных для удобства чтения я пропустил это...\ 07.07.2013
  • @ user2526311: если предположить, что rnd является экземпляром Random, да, это правильно. Почему бы и нет? Вы тестировали код? 07.07.2013
  • @JBNizet Я проверил код и получил ошибку rnd, которая не может быть разрешена. 07.07.2013
  • @JBNizet и ОП: Извините, сегодня я действительно не в себе. 07.07.2013
  • @hexafraction Вы имеете в виду «Случайный» вместо случайного? Потому что rand все еще не может быть решен. 07.07.2013
  • @ user2526311: значит, вы слепо копируете и вставляете код, даже не понимая, что он делает? Чем может быть инициализирован rnd, учитывая, что вы спрашивали о случайных строках? 07.07.2013
  • @user2526311 user2526311 Еще раз извините. Он должен работать. Я вытащил его из более крупного проекта и не смог сделать его работоспособным и автономным из-за собственного невежества сегодня. 07.07.2013

  • 2

    Сохраните все ваши принятые буквы в массиве, затем сгенерируйте случайное число от 0 до длины этого массива N раз, чтобы получить N индексов буквы в массиве. Соедините буквы.

    РЕДАКТИРОВАТЬ:

    Обратите внимание, что если ваша цель — генерировать уникальные имена, случайное — не решение. Случайность не гарантирует уникальности.

    07.07.2013

    3

    Кроме двух ответов -

    Вы можете иметь это как <yourChoiceOfName>-<currentTime>.yourext. Таким образом, вероятность двух файлов с одинаковым именем меньше.

    currenttime может включать milliseconds.

    В этом случае у вас есть известная длина, то есть длина yourChoiceOfName + длина currentTime + длина yourext.

    07.07.2013
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: wedx@cp9.ru