1.9 Zufall

9.1 random-Funktion

Die Funktion random() liefert zufällig Zahlen innerhalb der in den Parametern angegebenen Grenzen zurück. Wenn eine Zahl angegeben wird, dann entsteht eine Zufallszahl zwischen 0 und dem angegebenen Wert. Werden zwei Zahlen angegeben, so entsteht eine Zufallszahl zwischen den beiden Werten.


random(4); 

liefert eine zufällige Gleitkommazahl (float) zwischen 0 und 4 zurück.


random(3, 9); 

liefert eine zufällige Gleitkommazahl zwischen 3 und 9 zurück.


random(-3, 3);

liefert eine zufällige Gleitkommazahl zwischen -3 und 3 zurück. Die resultierenden Zufallszahlen sind gleichverteilt.


Beispiel 1-9


void setup() {
  size(1280,720);
}

void draw(){
}

void keyPressed(){
   if (key == ‘s‘){
      float radius = random(20, 40);
      fill(random(128,255));
      ellipse(random(width), random(height), radius, radius);
   }
   if (key == ‘e‘){
      background(random(128)); 
   }
} 

9.2 randomGaussian()

Der Befehl randomGaussian() liefert eine Zufallszahl zurück, die der statistischen Funktion der Normalverteilung mit einer Standardabweichung von 1 und einem Mittelwert von 0 entspricht.

Fig.: Gaussche Verteilung

Beispiel 1-10


int radius = 10;

void setup() {
  size(1280,720);
  background(255);
  fill(0,50);
  noStroke();
}

void draw(){
   float x = width/2 + randomGaussian() * 100;
   float y = height/2 + randomGaussian() * 50;
    ellipse(x, y, radius, radius);
}

9.3 noise()

Exkurs: Oscar für Perlin Noise

Perlin Noise

›Returns the Perlin noise value at specified coordinates. In contrast to the random() function, Perlin noise is defined in an infinite n-dimensional space, in which each pair of coordinates corresponds to a fixed semi-random value (fixed only for the lifespan of the program). The resulting value will always be between 0.0 and 1.0. Processing can compute 1D, 2D and 3D noise, depending on the number of coordinates given. The noise value can be animated by moving through the noise space, as demonstrated in the first example above. The 2nd and 3rd dimensions can also be interpreted as time.

The actual noise structure is similar to that of an audio signal, in respect to the function‘s use of frequencies. Similar to the concept of harmonics in physics, Perlin noise is computed over several octaves which are added together for the final result.‹

Beispiel 1-11


float offsetX = 0.0;
float offsetY = 3.0;
float radius = 15.0;

void setup(){
   size(800,600); 
   noStroke();
}

void draw() {
  fill(255, 10);
  rect(0,0,width, height);
  offsetX = offsetX + .01;
  offsetY = offsetY + .05;
  float x = noise(offsetX) * width;
  float y = noise(offsetY) * height;
  fill(0);
  ellipse(x, y,radius,radius);
}