На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Генератор Alpha-numeric
    Подскажите, пожалуйста.
    Генератор случайных чисел построить легко - на основании текущего времени в мс. Хотелось бы appha-numeric формат просто.. И тогда что же, пистать самому (допустим, генерировать из диапазона латинских букв и вставлять char в сгенерированную строку от числа времени)или есть уже готовые решения?

    -Added
    Вот написал программку. Она генерит случайное число по времени в мс, потом вставляет на случайные позиции латинские заглавные буквы A-Z
    ExpandedWrap disabled
      public class Generator {
              Random randomTimems=new Random(new Date().getTime());
              Random randomCharandPos=new Random();
          private String generateRandom() {
       
              return Integer.toString(Math.abs(randomTimems.nextInt()));
       
          }
          private char generateChar(){
              int charNumber=Math.abs(randomCharandPos.nextInt(23))+67;
              return (char)charNumber;
          }
          private int generatePosition(String timems){
              return Math.abs(randomCharandPos.nextInt(timems.length()));
          }
          public String getCode(){
              String timems=generateRandom();
              for(int i=0;i<4;i++){
              int pos=generatePosition(timems);
                  timems=timems.substring(0,pos)+generateChar()+timems.substring(pos+1);
              }
              return timems;
          }
          public static void main(String args[]){
              Generator generator=new Generator();
              for(int i=0;i<10;i++){
                  System.out.println(generator.getCode());
              }
          }
       
      }
      Можно было бы поступить проще -
      Цитата Большой Синий Кит @
      Генератор случайных чисел построить легко - на основании текущего времени в мс.

      Есть java.util.Random.

      Цитата Большой Синий Кит @
      Вот написал программку.

      А вот мой вариант:

      ExpandedWrap disabled
        public class EnhancedRandom extends Random {
            
            private static final char[] SYMBOLS = {
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
                'U', 'V', 'W', 'X', 'Y', 'Z'
            };  
         
            public EnhancedRandom() {
                super();
            }
            
            public EnhancedRandom(long seed) {
                super(seed);
            }
         
            public char nextChar() {
                return SYMBOLS[nextInt(SYMBOLS.length)];
            }
            
            public String nextString(int length) {
                StringBuilder stringBuilder = new StringBuilder(length);
                
                while (--length >= 0) {
                    stringBuilder.append(nextChar());
                }
                
                return stringBuilder.toString();
            }
         
        }


      А ещё есть java.util.UUID :)
        Цитата wind @
        А вот мой вариант:
        ....
        ....

        Спасибо. :) Изменил вот как - чтобы символы брались из массива: так действительно лучше (по подобию Вашей программы):
        ExpandedWrap disabled
          public class GeneratorPatientID{
                  Random randomTimems=new Random(new Date().getTime());
                  Random randomCharandPos=new Random();
              private static final char[] SYMBOLS = {
                  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                  'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
                  'U', 'V', 'W', 'X', 'Y', 'Z'
              };
              private String generateRandom() {
                  return Integer.toString(Math.abs(randomTimems.nextInt()));
              }
           
              private char generateChar(){
                  int charNumber=Math.abs(randomCharandPos.nextInt(SYMBOLS.length));
                  return SYMBOLS[charNumber];
              }
           
              private int generatePosition(String timems){
                  return Math.abs(randomCharandPos.nextInt(timems.length()));
              }
           
              public String getCode(){
                  String timems=generateRandom();
                  for(int i=0;i<4;i++){
                  int pos=generatePosition(timems);
                      timems=timems.substring(0,pos)+generateChar()+timems.substring(pos+1);
                  }
                  return timems;
              }
          }

        Но все-таки это довольно громоздко.. :) Ну и количество символов скачет в результате, конечно.
        Сообщение отредактировано: Большой Синий Кит -
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0202 ]   [ 14 queries used ]   [ Generated: 18.05.24, 12:54 GMT ]