Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (P-Z)

 

RAND-Funktion [Nummerisch]

Gibt eine Zufallszahl im Intervall von 0 bis 1 zurück, mit einem optionalen Initialwert

Syntax
RAND( [Ganzzahlausdruck] )
Parameter
  • Ganzzahlausdruck   Ein optionaler Initialwert zur Erstellung einer Zufallszahl. Dieses Argument ermöglicht Ihnen die Erstellung einer Zufallszahlensequenz.

Rückgabe

DOUBLE

Bemerkungen

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.

Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

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 );