Man kann einen Random Walk (zufällige Irrfahrt) in einem SQL Server-Skript abbilden, obwohl SQL nicht die ideale Sprache für solche Berechnungen ist. Ein Random Walk ist eine Folge von Schritten, bei denen jeder Schritt zufällig in eine Richtung geht (z. B. +1 oder -1). In SQL kann man dies mit Hilfe von Zufallszahlen und kumulativen Summen realisieren.
Hier ist ein Beispiel, wie man einen einfachen Random Walk in SQL Server implementieren kann:
-- Tabelle erstellen, um die Schritte des Random Walks zu speichern
CREATE TABLE RandomWalk (
Step INT PRIMARY KEY,
Value INT
);
-- Variablen initialisieren
DECLARE @Step INT = 1;
DECLARE @Value INT = 0;
DECLARE @RandomStep INT;
-- Anzahl der Schritte festlegen
DECLARE @MaxSteps INT = 100;
-- Random Walk durchführen
WHILE @Step <= @MaxSteps
BEGIN
-- Zufälligen Schritt generieren (-1 oder +1)
SET @RandomStep = CASE WHEN RAND() > 0.5 THEN 1 ELSE -1 END;
-- Wert aktualisieren
SET @Value = @Value + @RandomStep;
-- Schritt in die Tabelle einfügen
INSERT INTO RandomWalk (Step, Value)
VALUES (@Step, @Value);
-- Schritt erhöhen
SET @Step = @Step + 1;
END;
-- Ergebnis anzeigen
SELECT * FROM RandomWalk;
Erklärung:
- Tabelle
RandomWalk
: Diese Tabelle speichert den Schritt (Step
) und den aktuellen Wert (Value
) des Random Walks. - Variablen:
@Step
zählt die Schritte.@Value
speichert den aktuellen Wert des Random Walks.@RandomStep
generiert einen zufälligen Schritt (-1 oder +1).
- Schleife: Die
WHILE
-Schleife führt den Random Walk für eine festgelegte Anzahl von Schritten (@MaxSteps
) durch. - Zufälliger Schritt:
RAND()
generiert eine Zufallszahl zwischen 0 und 1. Wenn die Zahl größer als 0,5 ist, wird der Schritt auf +1 gesetzt, sonst auf -1. - Wert aktualisieren: Der Wert des Random Walks wird um den zufälligen Schritt aktualisiert.
- Ergebnis speichern: Jeder Schritt wird in die Tabelle
RandomWalk
eingefügt. - Ergebnis anzeigen: Am Ende wird die Tabelle
RandomWalk
abgefragt, um den Verlauf des Random Walks anzuzeigen.
Hinweis:
RAND()
in SQL Server generiert eine Zufallszahl zwischen 0 und 1. DaRAND()
bei jedem Aufruf eine neue Zufallszahl generiert, ist es wichtig, dass es innerhalb der Schleife aufgerufen wird.- SQL ist nicht die effizienteste Sprache für solche Berechnungen, aber für einfache Random Walks ist es durchaus machbar.
Dieses Skript erzeugt einen einfachen Random Walk mit 100 Schritten. Du kannst die Anzahl der Schritte anpassen, indem du den Wert von
@MaxSteps
änderst.