4.4 Walter tanzt den Random-Walk
 
  In diesem Kapitel wollen wir lernen, wie wir eine Turtle einen 'Random-Walk' tanzen lassen: Jeder Tanzschritt, den die Turtle unternimmt unterliegt dem Zufall, das gilt für die Richtung aber auch für die für die Schrittlänge. Der Tanz gleicht also eher dem Gang eines Betrunkenen, der nicht nicht mehr kontrollieren kann in welche Richtung und mit welcher Schrittlänge er sich als nächstes bewegen wird. Tatsächlich kennt die Physik diesen Tanz, man nennt ihn dort "Brownsche Bewegung".
 
Zufallszahlen Um unseren Tanz implementieren zu können, müssen wir noch lernen, wie wir Zufallszahlen erzeugen und verwenden können. Es gibt im Standard-Java eine Klasse Math, die eine Vielzahl von mathematischen Methoden zur Verfügung stellt . Wie etwa die Methode random(). Sie liefert eine Zufallszahl im Intervall [0;1), also eine Zufallszahl die größer oder gleich 0 und echt kleiner 1 ist. Der Aufruf der Methode ist ein typischer Aufruf einer sog. Klassenmethode: <Klassenname>.<Methodenname>:

Math.random();

Wollen wir eine Zufallszahl aus dem Intervall [0,30) erzeugen, schreiben wir 30*Math.random().

Jetzt zu unserem Programm. UNser Programm (Klasse) nenne wir
RandomTurtle. Wir deklarieren und erzeugen eine Turtle mit dem Namen walter.

Turtle walter;
...
walter = new Turtle(tWin);

In der Methode zeichne() deklarieren wir eine Variable vorwaerts vom Typ double und speichern in ihr eine Zufallszahl zwischen 0 und 30 (genauer aus dem Intervall [0;30):

double vorwaerts = 30*Math.random();

mit

walter.forward(vorwaerts);

bewegt sich die Turtle also um diese zufällig gewählte Strecke in ihre Blickrichtung.

Statt der beiden Zeilen

double vorwaerts = 30*Math.random();
walter.forward(vorwaerts);

können wir auch kürzer

walter.forward(30*Math.random());

schreiben. Auf eine Variable vorwaerts können wir dann verzichten.

Auf die gleiche Weise können wir auch die Wahl der Richtung dem Zufall überlassen.

walter.right(360*Math.random());
 

Der Random-Walk


 

Download:
RandomTurtle.java
Der gesamte Quellcode (er setzt das Paket turtle voraus, siehe Kap .8.1)
import turtle.*;
import java.awt.*;

public class RandomTurtle extends TurtleFrame {
    Turtle walter;
    public RandomTurtle(String title) {
        super(title);
        walter = new Turtle(tWin);
    }

    public void zeichne() {
        walter.right(360*Math.random());
        walter.forward(30*Math.random());
    }

    public static void main (String[] args) {
        new RandomTurtle("Random-Walk");
    }
}
zu 4.5 Walter und Elsa versuchen den Passo-Doble
zur Startseite www.pohlig.de  (C) MPohlig 2004