Привет я хочу генерировать Уникальное Случайное число с использованием следовать оператора:
Convert(int, (CHECKSUM(NEWID()))*100000) AS [ITEM]
Причина, когда я использую пункты соединений на "от" него, генерирует двойные регистры при помощи NEWID ()
Я использую SQL Server 2000
*PD: Когда я использую Rand (), это, вероятно, повторяет на вероятности 1 из 100000000, но это настолько очень важно, таким образом, это должны быть 0% вероятности для повторения случайного сгенерированного значения
Мой Запрос с NewID () и результат на операторе SELECT дублирован (x2) Мой Запрос без NewID () и использование, Rand () на операторе SELECT является единственным (x1), но вероятность повторения случайное сгенерированное значение неопределенно, но существует!
Спасибо!
Это переполнение?
CAST(CHECKSUM(NEWID()) AS bigint) * CAST(100000 AS bigint) AS [ITEM]
CAST(CAST(CHECKSUM(NEWID()) AS bigint) * CAST(100000 AS bigint) % 2100000000 AS int) AS [ITEM]
Редактировать:
Нет такой вещи, как 0% шанс дублирования числа
CHECKSUM (NEWID ())) возвращает целое число, которое имеет 4 миллиарда строк . Парадокс дня рождения означает, конечно, что вероятность столкновения намного выше.
Bigint (вверху) или десятичное число (38,0) дают вам гораздо больше возможностей для игры, но только уменьшают вероятность столкновения, но никогда не устраняют его.
Но все еще не понимаю, почему вы пытаетесь ПРИСОЕДИНИТЬСЯ с уникальным случайным числом ...
В SQL Server вы можете использовать это для генерации случайного числа или случайного целого числа между указанными параметрами
DECLARE @RandomNumber float
DECLARE @RandomInteger int
DECLARE @MaxValue int
DECLARE @MinValue int
SET @MaxValue = 4
SET @MinValue = 2
SELECT @RandomNumber = RAND()
SELECT @RandomInteger = ((@MaxValue + 1) - @MinValue) * @RandomNumber + @MinValue
SELECT @RandomNumber as RandomNumber, @RandomInteger as RandomInteger
Если вы используется MySQL
SELECT RAND();
Документ MySQL: http://dev.mysql.com/doc/refman/5.0/en/mat Mathematical-functions.html#function_rand
Если вы с использованием Postgres
SELECT RANDOM();
Документ Postgres: http://www.postgresql.org/docs/8.0/static/functions-math.html