powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / случайная строка
15 сообщений из 15, страница 1 из 1
случайная строка
    #38987874
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Если создавать строки из рандомных символов (как индентификатор, например) то есть вероятность, что будут совпадения. Есть ли возможность как-то сделать, что-бы каждый раз не просматривать уже существующие присвоенные идентификаторы? Нужно именно случ строка размером, скажем, 8 символов, автоинкремент с 0 - не подходит.
...
Рейтинг: 0 / 0
случайная строка
    #38987886
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну кроме как вариант заранее их создавать параллельно?
...
Рейтинг: 0 / 0
случайная строка
    #38987895
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,

а GUID или MD5 от Guid - не подойдёт?
...
Рейтинг: 0 / 0
случайная строка
    #38987984
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие символы допустимы?
Если 0-9,a-z,A-Z то это 62 значения на символ или 218*10^12 вариантов

Возьми текущую дату-время в секундах от 01.01.15, займет 10^8 на 30 лет
Оставшиеся 2180000 генери каким-нибудь рандомом. Маловато, тут надо голову поломать чтобы не задвоилось если пачками начнут генерить. Если в секунду много не надо, то как угодно.

Затем полученное число переводи в 62-ричную систему счисления.

Вобщем будет работать если не генерить пачками.
...
Рейтинг: 0 / 0
случайная строка
    #38988026
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВозьми текущую дату-время в секундах от 01.01.15, займет 10^8 на 30 лет
Ошибся немного, 9 знаков займет, т.е. 10^9

На остальную часть будет всего 218000. Генерация пачек резко усложняется.

Если сделать 10 символов, то разрядность увеличится до 10^18 ( = 62^10).
...
Рейтинг: 0 / 0
случайная строка
    #38988852
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Добрый день. Если создавать строки из рандомных символов (как индентификатор, например) то есть вероятность, что будут совпадения. Есть ли возможность как-то сделать, что-бы каждый раз не просматривать уже существующие присвоенные идентификаторы? Нужно именно случ строка размером, скажем, 8 символов, автоинкремент с 0 - не подходит.То есть, если я правильно понял, генерируется список случайных строк, и хочется, чтобы в списке не было двух одинаковых?
(Хотя "настоящая" случайность подразумевает повторения, если бросить игральную кость 7 раз, будет как минимум одно повторение ;)

Тогда только проверять. А почему у вас нежелание проверять? При должной организации, это будет быстро.
...
Рейтинг: 0 / 0
случайная строка
    #38989589
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Добрый день. Если создавать строки из рандомных символов (как индентификатор, например) то есть вероятность, что будут совпадения. Есть ли возможность как-то сделать, что-бы каждый раз не просматривать уже существующие присвоенные идентификаторы? Нужно именно случ строка размером, скажем, 8 символов, автоинкремент с 0 - не подходит.
8 символов для ASCII это грубо говоря 8 байт или 64 бита.
Можно взять счётчик от 0 до 2^64-1 и каждое его значение
подвергнуть определённым преобразованиям. Например вращать
и переставлять биты. Потом это число преобразовать в вектор
из 8 символов.

Я утверждаю что данная последовательность строк будет уникальной
пока не исчерпан диапазон 64х битного целого.

Правда у этой последовательности возможно будут некоторые артефакты.
Но обсуждать их лучше после создания макета. Возможно автора и это
устроит вполне.

В более сложном способе можно делать сложение по модулю 2 между
битиками но последнее требует (возможно) некоторого гугления по
теме всяких ГПСЧ и вопросов уникальности. Я щас не готов навскидку
утверждать как там будет правильно и т.п.
...
Рейтинг: 0 / 0
случайная строка
    #38989656
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
mayton8 символов для ASCII это грубо говоря 8 байт или 64 бита.
Можно взять счётчик от 0 до 2^64-1 и каждое его значение
подвергнуть определённым преобразованиям. Например вращать
и переставлять биты. Потом это число преобразовать в вектор
из 8 символов.Ага, а можно взять и зашифровать любым криптоалгоритмом с 64х битным блоком.

maytonВ более сложном способе можно делать сложение по модулю 2 между
битиками но последнее требует (возможно) некоторого гугления по
теме всяких ГПСЧ и вопросов уникальности. Я щас не готов навскидку
утверждать как там будет правильно и т.п.Ну с ГПСЧ тоже ничего сложного, можно взять готовые значения параметров
...
Рейтинг: 0 / 0
случайная строка
    #38989684
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор задаёт общий вопрос. Мы даже не знаем что у него есть в качестве инструмента.
Может JavaScript?

Криптография это вещь конечно мощная. Но давайте сначала исчерпаем простые продходы.
Сиквенсы. И простые преобразования. И потом подихоньку подтянем тяжёлую артиллерию.
ГПСЧ с уникальностью и блочные шифры.

Хотя мне мой опыт подсказывает что обычно запросы более скромные.

P.S. Просил я только масла на завтрак мне подать (С)
...
Рейтинг: 0 / 0
случайная строка
    #38989854
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Есть ли возможность как-то сделать, что-бы каждый раз не просматривать уже существующие присвоенные идентификаторы?Да, есть. Просто в строке должна быть случайная часть и неслучайная. В качестве последней хорошо подходит, например, что-то, создаваемое из штампа времени генерации, но без потери уникальности (без сокращения количества битов).
...
Рейтинг: 0 / 0
случайная строка
    #38989955
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Нужно именно случ строка размером, скажем, 8 символов, автоинкремент с 0 - не подходит.Автоинкремент с 10000000
...
Рейтинг: 0 / 0
случайная строка
    #38990946
Гость3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как вариант:
- берём-таки поле с автоинкрементом
- очередное значение переводим в другую систему счисления (двоичную, троичную и т.п.) и переставляем в нём "биты" (или как они будут называться для выбранной системы счисления)
- собираем обратно "в число"

На выходе будут "псевдослучайные" значения, (которые, правда, сравнительно несложно [чем выше основание системы - тем проще] будет предсказывать), но вдруг для задачи мега-секьюрность и не нужна?

Зато гарантирована уникальность + полное покрытие диапазона.
...
Рейтинг: 0 / 0
случайная строка
    #38990950
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После простой перестановки битов они и будут всё равно отличаться 1 битом.
Или "шуметь" будет больше всех 1 бит где-то в серединке.
...
Рейтинг: 0 / 0
случайная строка
    #38990958
Гость3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton"шуметь" будет больше всех 1 бит где-то в серединкеНу да, я ж про это и написал :-)

Другая крайность - честная случайная функция + перебор "не выпадало ли такое?"

Между этими вариантами - только модификации способа отображения последовательных чисел в непоследовательные разной степени замороченности.
...
Рейтинг: 0 / 0
случайная строка
    #38991036
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость3mayton"шуметь" будет больше всех 1 бит где-то в серединкеНу да, я ж про это и написал :-)

Другая крайность - честная случайная функция + перебор "не выпадало ли такое?"

Между этими вариантами - только модификации способа отображения последовательных чисел в непоследовательные разной степени замороченности.
"Честная функция" базирующаяся на произвольном ГСЧ должна хранить БД значений которые уже выпадали.

Я не хочу давать оценок. Тут всё зависит от юзкейса но я-бы категорически ни себе никому не желал
такую функцию. В печку ее...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / случайная строка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]