Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
xOk

Генерация случайного идентификатора

Всем привет!

Есть ли способ сгенерировать случайный идентификатор (например, в формате UUID)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

На данный момент не придумал ничего умнее, кроме как генерировать самому примерно так:

static string GenerateUUID() {
        string result = "";
        string chars = "abcdef0123456789";
        int charsLength = chars.Length();
        int length = 32;

        int i, j;
        for (i = 0; i < 8; i++)
            result += chars[Math.RandomInt(0, charsLength)];
        result += "-";
        for (j = 0; j < 3; j++) {
            for (i = 0; i < 4; i++)
                result += chars[Math.RandomInt(0, charsLength)];
            result += "-";
        }
        for (i = 0; i < 12; i++)
            result += chars[Math.RandomInt(0, charsLength)];

        return result;
    }

Получается что-то похожее на UUID (https://www.uuidgenerator.net/version4).

Примеры получающихся значений:

  • 6fb179d3-87c4-94e1-946f-efd73788882e
  • ef8520f4-1ff2-8769-4a96-04b76ca334d8
  • 483f4da5-dc5b-b5e4-95a3-82cda6d0b735
Изменено пользователем xOk (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte
  • 0

главное не забывать сверять сгенеренные значения с ранее использованными, т.е. вести учет заюзанных. А то они нифига не уникальные будут)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@123new так вот хотелось задумка как раз и состоит в том, чтобы избежать этого. Иначе подошел бы и обычный порядковый номер сущности с перепроверкой его уникальности.

Указанная мной функция генерит строку, в которой 32 меняющиеся позиции, каждая из которых может иметь одно из 16 значений. Это значит, что вероятность получить 2 одинаковых строки равна около 1/(16^32).

Я понимаю, что ничего абсолютно случайного нет, но надеюсь, что и с учётом "неслучайности" функции Math.RandomInt(), я не получу 2 одинаковые строки.

Но Вы правы, не стОит забывать о таком исходе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
12 минут назад, xOk сказал:

@123new так вот хотелось задумка как раз и состоит в том, чтобы избежать этого. Иначе подошел бы и обычный порядковый номер сущности с перепроверкой его уникальности.

Указанная мной функция генерит строку, в которой 32 меняющиеся позиции, каждая из которых может иметь одно из 16 значений. Это значит, что вероятность получить 2 одинаковых строки равна около 1/(16^32).

Я понимаю, что ничего абсолютно случайного нет, но надеюсь, что и с учётом "неслучайности" функции Math.RandomInt(), я не получу 2 одинаковые строки.

Но Вы правы, не стОит забывать о таком исходе.

как вариант, заносить сгенерированные id в какой-либо массив или имя папки, например (если вдруг для чего-то надо), и тупо сверять есть ли в списке. Операция не мудреная, но полезная ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка