Не подскажете ли алгоритм, который бы генерировал уникальные (в ближайшие лет 100) числа? Например, как это делает CoCreateGUID. Только хочется, что-нибудь отличное от GUID.
Здравствуйте, Disappear, Вы писали:
D>Не подскажете ли алгоритм, который бы генерировал уникальные (в ближайшие лет 100) числа? Например, как это делает CoCreateGUID. Только хочется, что-нибудь отличное от GUID.
Чем конкретно не устраивает GUID?
[ Posted via RSDN@Home 1.1.4 beta 5 (395) listening to silent ]
It's kind of fun to do the impossible (Walt Disney)
Здравствуйте, Alex Alexandrov, Вы писали:
AA>Здравствуйте, Disappear, Вы писали:
D>>Не подскажете ли алгоритм, который бы генерировал уникальные (в ближайшие лет 100) числа? Например, как это делает CoCreateGUID. Только хочется, что-нибудь отличное от GUID.
AA>Чем конкретно не устраивает GUID?
А всем вроде устраивает. Просто интересно, может существуют подобные алгоритмы.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Disappear, Вы писали:
D>>Только хочется, что-нибудь отличное от GUID.
W>Сгенерируй GUID и сделай с ним что-нибудь. Переставь байты например.
Здравствуйте, Disappear, Вы писали:
D>Дык ведь повторяются.
Не понял. Если они высокого качества, то вероятность совпадения двух длинных случайных чисел равна нулю.
В жизни кaждoгo челoвекa бывaют приятные мoменты, кoгдa oн чувствует себя пoлным идиoтoм. Приятнoсть этих мoментoв в пoстижении истины.
Здравствуйте, sugarde, Вы писали:
S>Здравствуйте, sugarde, Вы писали:
S>Нет. Бред, не равна нулю, но стремится к нему.
Да, кажется что-то подобное писал Кнут ...
но нет ли все-таки какого либо испробованного алгоритма, который устремляет эту вероятность к 0 ?
Или хотябы какого порядка должны быть эти качественные случайные числа, чтобы устремить эту вероятность куда надо?
Здравствуйте, nen777w, Вы писали:
S>>>Генератор случайных чисел? D>> Дык ведь повторяются.
N>Случайные числа получаемые из шумов/сигнала в Aux-е твоей звуковой N>карты. Очень даже хороший генератор.
А если на компе нет звуковой карты. Например это глухонимой безвидяшный сервер.
Здравствуйте, Disappear, Вы писали:
D>Да, кажется что-то подобное писал Кнут ... D>но нет ли все-таки какого либо испробованного алгоритма, который устремляет эту вероятность к 0 ? D>Или хотябы какого порядка должны быть эти качественные случайные числа, чтобы устремить эту вероятность куда надо?
Насколько я помню, в GUID используется время, номер сетевой карты или случайное число.
Умноженная вероятность совпадения некого случайного числа по любому алгоритму и его одновременного создания с точностью до милисекунды.
( правда в генераторах случайных чисел тоже использется время) достаточно мала.
Опять же чем длиннее число тем вероятность меньше.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
D> А если на компе нет звуковой карты. Например это глухонимой безвидяшный сервер.
Записать этот шум в WAVE файл и выбирать оттуда, файлов много можно
сделать, можно ещё сворачивать шум с шумом.
Извращение, и не совсем случайно, но шо делать в таком сл.
Здравствуйте, Disappear, Вы писали:
D>Здравствуйте, nen777w, Вы писали:
S>>>>Генератор случайных чисел? D>>> Дык ведь повторяются.
N>>Случайные числа получаемые из шумов/сигнала в Aux-е твоей звуковой N>>карты. Очень даже хороший генератор.
D>А если на компе нет звуковой карты. Например это глухонимой безвидяшный сервер.
А если на машине нет сетевухи, то GUID использует таймер. Можно что-то в этом роде. Просто звук — еще надежнее, чем таймер.
Если программист в рабочее время играет, значит —
либо у него мало работы и большая зарплата,
либо у него много работы и маленькая зарплата.
Здравствуйте, kost-BebiX, Вы писали:
KB>Здравствуйте, Disappear, Вы писали:
D>>Здравствуйте, nen777w, Вы писали:
S>>>>>Генератор случайных чисел? D>>>> Дык ведь повторяются.
N>>>Случайные числа получаемые из шумов/сигнала в Aux-е твоей звуковой N>>>карты. Очень даже хороший генератор.
D>>А если на компе нет звуковой карты. Например это глухонимой безвидяшный сервер.
KB>А если на машине нет сетевухи, то GUID использует таймер. Можно что-то в этом роде. Просто звук — еще надежнее, чем таймер.
Почему? У тебя есть статистика по распределению цифр в зависимости от шумов?
Здравствуйте, nen777w, Вы писали:
N>Случайные числа получаемые из шумов/сигнала в Aux-е твоей звуковой N>карты. Очень даже хороший генератор.
Охотно верю что это хороший генератор. Только не уверен что он может давать абсолютную уникальность.
Здравствуйте, Andrew_B, Вы писали:
A_B>делали как-то репликацию двух баз mssql,там uniqueidentifier-ы совпали
Интересно. Я не большой знаток в области генерации GUID-ов, но был уверен, что это невозможно. Основными элементами уникальности, насколько я знаю, являются MAC-адрес сетевой карты и показания системных часов. Неужели реплицируемые без ethernet-а были?
[ Posted via RSDN@Home 1.1.4 beta 5 (395) listening to silent ]
It's kind of fun to do the impossible (Walt Disney)
Здравствуйте, Disappear, Вы писали:
D>Не подскажете ли алгоритм, который бы генерировал уникальные (в ближайшие лет 100) числа? Например, как это делает CoCreateGUID. Только хочется, что-нибудь отличное от GUID.
Если скорость не важна, то самое простое – это взять что либо физически случайное из компьютера.
Например показания датчиков (температур, скорости вентиляторов, напряжений), шум звуковой платы, асинхронность генераторов в СМОS и MB.
Я считаю, что очень хороший результат даёт RDTSC in CPU PENTIUM.
Точнее, хорим некоторое время, большее чем время между прерываниями, последовательные результаты RDTSC, затем хорим все биты результата и получаем случайный бит.
За счёт асинхронности современных компьютеров получается очень хороший результат.
Тесты это подтверждают.
Далее, берём таких битов столько, сколько надо, и получаем уверенно уникальный GUID. На 100 лет хватит 64 бит.