Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-98003
Макс
2002-09-10 14:36
2002.09.30
LookUp - поля с большими массивами информации


3-97966
:: Hamster ::
2002-09-09 10:16
2002.09.30
Организация Transaction..или в чём тут может быть дело ?!


3-97975
vlad40
2002-09-09 12:25
2002.09.30
Ошибка


1-98082
Осирис
2002-09-19 15:59
2002.09.30
Диалоговое окно


1-98154
antonioxxx
2002-09-17 19:02
2002.09.30
Округление вещественных чисел