Udostępnij za pośrednictwem


Using RAND

Funkcja RAND oblicza losową liczbę zmiennoprzecinkową z zakresu od 0 do 1, a opcjonalnie można wykonać, tinyint, int, lub smallint punkt początkowy liczbę losową, aby obliczyć wartość.

W poniższym przykładzie oblicza dwóch liczb losowych.Pierwszy RAND() Funkcja pozwala SQL Server Wybierz wartość początkową, a drugi RAND() Funkcja używa wartości 3 dla pozycji początkowej.

SELECT RAND(), RAND(3);

Funkcja LOS jest pseudorandom generator liczb, działająca w sposób podobny do C Biblioteka czas działania rand Funkcja. Jeśli siewnego nie zostanie podana, system generuje swoich własnych numerów siewnego zmiennej.Wywołanie funkcji RAND z wartość początkową, należy użyć wartości zmiennej zarodkowych dla generatora liczb losowych.Z tego samego wartość początkową wielokrotnie wywołanie funkcji LOS, zwraca taką samą wartość wygenerowany.Poniższy skrypt zwraca taką samą wartość dla wszystkich wywołań funkcji RAND, ponieważ używają one wszystkie te same wartość początkową:

SELECT RAND(159784);
SELECT RAND(159784);
SELECT RAND(159784);

Typowy sposób dla generatora liczb losowych od LOS to coś stosunkowo zmienną jako wartość początkową, takie jak dodanie kilku części GETDATE obejmują:

SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
           + (DATEPART(ss, GETDATE()) * 1000 )
           + DATEPART(ms, GETDATE()) );

Podczas generowania wartości zarodkowych za pomocą algorytm oparty na GETDATE LOS nadal może generować zduplikowane wartości w przypadku wywołań funkcji RAND odbywa się w przedziale od najmniejszej datepart dotyczącym używane w algorytmie.Jest to szczególnie prawdopodobne podczas wywołań funkcji RAND znajdują się w jednej partia.Wiele wywołań funkcji LOS w jednej partia mogą być wykonywane w ramach tego samego milisekundy.Jest to najmniejsza przyrost w parametrze DATEPART.W takim przypadek należy dołączyć wartości w oparciu o inny niż czas generowania wartości zarodkowych.