Udostępnij za pośrednictwem


Za pomocą funkcji RAND

Funkcja RAND oblicza losową liczbę zmiennoprzecinkową od 0 do 1 i opcjonalnie można podjąć 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 na 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 pseudorandom generator liczb, który działa w sposób podobny do biblioteki c run-czas rand funkcji.Jeśli nie materiał siewny, system generuje własnych numerów zmiennej materiału siewnego.Wywołanie funkcji RAND wartości materiału siewnego, należy użyć wartości zmiennej materiału siewnego dla generatora liczb losowych.Jeśli o tej samej wartości materiału siewnego wielokrotnie wywołań funkcji RAND, zwraca taką samą wartość wygenerowane.Poniższy skrypt zwraca taką samą wartość dla wywołań funkcji RAND, ponieważ wszystkie używają tej samej wartości materiału siewnego:

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

Typowy sposób generowania liczb losowych z LOS jest stosunkowo zmiennej jako wartości materiału siewnego, takie jak dodanie kilku części GETDATE coś obejmują:

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

Podczas generowania wartości materiału siewnego za pomocą algorytm oparty na GETDATE LOS nadal można generować zduplikowane wartości Jeżeli w przedziale najmniejszą datepart używane w algorytmie wywołań funkcji RAND.Jest to szczególnie prawdopodobne, gdy wywołań funkcji RAND znajdują się w jednej partia.Wiele wywołań funkcji RAND w pojedynczej partia mogą być wykonywane w ramach tej samej milisekundy.Jest to najmniejsza przyrost DATEPART.W takim przypadek należy dołączyć wartości oparte na coś innego niż czas generowania wartości materiału siewnego.