Gibt eine Zufallszahl im Intervall von 0 bis 1 zurück, mit einem optionalen Initialwert
RAND( [Ganzzahlausdruck] )
Ganzzahlausdruck Ein optionaler Initialwert zur Erstellung einer Zufallszahl. Dieses Argument ermöglicht Ihnen die Erstellung einer Zufallszahlensequenz.
DOUBLE
Die RAND-Funktion ist ein multiplikativ-linear-kongruenter Zufallszahlengenerator. Siehe Park and Miller (1988), CACM 31(10), S. 1192-1201 and Press et al. (1992), Numerical Recipes in C (2. Ausgabe, Kapitel 7, S. 279). Das Ergebnis eines Aufrufs der RAND-Funktion ist eine Pseudo-Zufallszahl n. Dabei gilt: 0 < n < 1 (weder 0,0 noch 1,0 kann das Ergebnis sein).
Wenn eine Verbindung zum Server hergestellt wird, setzt der Zufallszahlengenerator einen Anfangswert (Initialwert). Jede Verbindung erhält einen eindeutigen Initialwert und sieht daher eine andere Zufallssequenz von anderen Verbindungen. Sie können auch einen Initialwert (Ganzzahlausdruck) als ein Argument angeben. Normalerweise sollten Sie dies nur einmal durchführen, bevor Sie eine Sequenz von Zufallszahlen durch nachfolgende Aufrufe der RAND-Funktion anfordern. Wenn Sie den Initialwert mehr als einmal initialisieren, wird die Sequenz neu gestartet. Wenn Sie denselben Initialwert angeben, wird dieselbe Sequenz generiert. Initialwerte, deren Werte nahe beieinander liegen, generieren ähnliche Anfangssequenzen, deren Divergenzen im Laufe der Sequenz zunehmen.
Kombinieren Sie bei dem Versuch, statistische Zufallsergebnisse zu erhalten, nicht die von einem Initialwert generierte Sequenz mit einem von einem zweiten Initialwert generierten Sequenz . Anders gesagt: Sie dürfen den Initialwert während der Generierung einer Sequenz von Zufallswerten nicht zurücksetzen.
Die RAND-Funktion wird als eine nicht-deterministische Funktion angesehen. Der Abfrageoptimierer behält die Ergebnisse der Funktion RAND nicht im Cache.
Weitere Hinweise zu nicht-deterministischen Funktionen finden Sie unter Cachebenutzung für Funktionen.
SQL/2003 Erweiterung des Herstellers
Die folgenden Anweisungen ergeben elf Zufallsergebnisse. Jeder nachfolgende Aufruf der RAND-Funktion, bei dem kein Initialwert angegeben ist, erzeugt weiterhin unterschiedliche Ergebnisse:
SELECT RAND( 1 ); SELECT RAND( ), RAND( ), RAND( ), RAND( ), RAND( ); SELECT RAND( ), RAND( ), RAND( ), RAND( ), RAND( ); |
Das folgende Beispiel erzeugt zwei Ergebnismengen mit identischen Sequenzen, weil der Initialwert zweimal angegeben wird:
SELECT RAND( 1 ), RAND( ), RAND( ), RAND( ), RAND( ); SELECT RAND( 1 ), RAND( ), RAND( ), RAND( ), RAND( ); |
Das folgende Beispiel erzeugt fünf Ergebnisse, die ähnliche Werte enthalten und in Bezug auf die Verteilung nicht zufällig sind. Aus diesem Grund ist es nicht empfehlenswert, die RAND-Funktion mehr als einmal mit ähnlichen Initialwerten aufzurufen:
SELECT RAND( 1 ), RAND( 2 ), RAND( 3 ), RAND( 4 ), RAND( 5 ); |
Das folgende Beispiel erzeugt fünf identische Ergebnisse und sollte vermieden werden:
SELECT RAND( 1 ), RAND( 1 ), RAND( 1 ), RAND( 1 ), RAND( 1 ); |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |