Текущий архив: 2002.09.30;
Скачать: CL | DM;
Вниз
Генерация уникальной последовательности латинских букв и цифр Найти похожие ветки
← →
madtomas (2002-09-20 12:04) [0]Возникла необходимость генерить УНИКАЛБНУЮ последовательность латинских букв и цифр длинной 16 символов ...
Как этоможно сделать ?
Или может есть какие-то готовые компаненты
← →
Anatoly Podgoretsky © (2002-09-20 12:08) [1]Есть такая функция Random, она тебе поможет решить пролему
← →
madtomas (2002-09-20 12:17) [2]непоможет .... во первых это будет число (а надо с буквами), и оно будет случайное, а не уникальное ... ;-))
← →
Anatoly Podgoretsky © (2002-09-20 12:20) [3]Во первых это будет индекс куда то, а во вторых как ты уникальность определяешь, что уникально или нет
← →
qube © (2002-09-20 12:20) [4]ну, буквы и числа это одно и то же (см. Chr(), Ord()).
для уникальности обычно привязываются к времени/дате (в данном случае поможет RandomizeTimer)
чем больше символов, тем меньше вероятность повторения.
А вообще, вопрос сложный. Microsoft для генерации GUID"ов серийный номер сетевой карты использует (где-то слышал).
← →
AFrolov © (2002-09-20 12:28) [5]Нужна не только функция Random но и еще желание задуматьмся над задачей.
Есть готовое решение которое дает последовательность из 16 байт - называется эта вещь GUID и может быть получена с помощью функции CoCreateGuid. Уникальность ее гарантирована. О том как ее использовать можно прочитать в Help.
← →
Старый Паскалист (2002-09-20 12:29) [6]2madtomas
Во первых, чем тебе буква - не число?
(Есть такая вещь, как отображение множеств)
А во вторых, что ты подразумеваешь под уникальностью?
В каких пределах? - точная уникальность - это когда ты
хранишь список уже сгенерированных последовательностей и
проверяешь любую сгенерированную на совпадение.
Но это унникальность только в твоей программе.
Принцип глобальной уникальности - в обеспечении очень низкой вероятности совпадения двух последовательностей. Для этого и пользуются генераторами случайных чисел + достаточно длинными последовательностями.
← →
REA (2002-09-20 12:37) [7]Уникальное в пределах чего?
CreateGUID создает последовательность с высокой долей вероятности уникальную.
GetTempFileName тоже что то выдает.
← →
AL2002 © (2002-09-20 12:40) [8]Задача только генерить. Значит, шестнадцать раз СЧР(рандом()).
← →
madtomas (2002-09-20 12:40) [9]2Старый Паскалист уникальности в моей программе мне вполне хватит ... И в принципе написать свое извращение для генерации этой самой последовательности - не проблемма, но ведь кто-то уже наверняка это сделал ... Вот и хочется позаимствовать это дело ... А проверять уникальность я как раз и буду на основе уже существующих последовательностей ....
← →
qube © (2002-09-20 12:42) [10]
> AL2002 ©
маленькая поправка:
рандомизетимер;
16 раз счр(рандом(255));
← →
Старый Паскалист (2002-09-20 12:46) [11]2madtomas (20.09.02 12:40)
>но ведь кто-то уже наверняка это сделал
Это такая элементарная вещь, что каждый делает её сам.
(если ему чем-то не подходит стандартный GUID).
← →
Anatoly Podgoretsky © (2002-09-20 12:50) [12]Не стоит делать через Random(255) это не соответствует задаче, лучше через массив допустим символов в пароле, тогда AllowedPwdChars[Random(SizeOf(AllowedPwdChars))+1] даст нам один символ, а уникальность достигается сравнением с ранее введенными, коллизии будут чрезвычайно редко если вообще будут
← →
Андрей Прокофьев © (2002-09-20 12:55) [13]Если речь идет о серийных номерах, то некоторые инсталляторы их генерят
Страницы: 1 вся ветка
Текущий архив: 2002.09.30;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.017 c