Tinyurl-разработайте уникальный код: потенциальный алгоритм для предотвращения коллизий

Можно использовать hidden селектор:

// Matches all elements that are hidden
$('element:hidden')

И visible селектор:

// Matches all elements that are visible
$('element:visible')

7
задан Dan Breen 10 August 2009 в 23:44
поделиться

6 ответов

Все, что вам нужно, это число, которое не имеет делителей с вашим ключевым пространством. Самый простой вариант - использовать простое число. Вы можете найти в Google большие простые числа или использовать http://primes.utm.edu/lists/small/10000.txt

8
ответ дан 7 December 2019 в 07:49
поделиться

Любое простое число, не являющееся фактором длины последовательности, должно иметь возможность охватывать последовательность без повторения. Для 64000000 это означает, что вам не следует использовать 2 или 5. Конечно, если вы не хотите, чтобы они генерировались последовательно, генерация их на 2 или 5 частей, вероятно, также не очень хорошо. Мне лично нравится номер 73973!

1
ответ дан 7 December 2019 в 07:49
поделиться

Существует другой метод получения аналогичного результата (переход по всему набору значений без повторения, непоследовательно), без использования простых чисел - с использованием последовательностей максимальной длины , которые можно сгенерировать с помощью специально сконструированных регистров сдвига.

1
ответ дан 7 December 2019 в 07:49
поделиться

Моя математика немного ржавая, но Я думаю, вам просто нужно убедиться, что GCF N и 64 миллиона равняется 1. Я бы выбрал простое число (которое не делится равномерно на 64 миллиона) на всякий случай.

0
ответ дан 7 December 2019 в 07:49
поделиться

Не изобретайте велосипед: http://en.wikipedia.org/wiki/Universally_Unique_Identifier

-3
ответ дан 7 December 2019 в 07:49
поделиться

@ Ник Льюис:

Ну, только если простое число не делит 64 миллиона. Так что для задающего вопросы числа вроде 2 или 5, вероятно, не рекомендуется.

0
ответ дан 7 December 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: