If you're seeing this message, it means we're having trouble loading external resources on our website.

Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. kastatic.org und *. kasandbox.org nicht blockiert sind.

Hauptinhalt

Zufallszahlen

Lerne, wie du in ProcessingJS mit der Funktion random() Zufallszahlen erzeugen und deren Werte mit if-Bedingungen überprüfen kannst.
Wir haben unsere if-Bedingungen benutzt, um Werte über die Umgebung zu überprüfen, wie die aktuelle Mausposition des Benutzers und vorhersehbar zu reagieren.
Aber was ist, wenn wir Unberechenbarkeit wollen, wenn wir wollen, dass unser Programm bei jedem Lauf anders handelt?
Der Zufall hilft uns!
Wir können zufällige Zahlen generieren und if und else if verwenden, um das Verhalten unseres Programms basierend auf den zufälligen Werten zu ändern.
Zum Beispiel:
var randNum = random(0, 10);
if (randNum < 5) {
   text("Trick!", 200, 200);
} else {
   text("Treat!", 200, 200);
}
Das Programm gibt die Hälfte der Zeit "Trick!" und die andere Hälfte "Treat!" aus.
So funktioniert es:
  • Der Variable randNum wird eine Zufallszahl zugewiesen, die bei 0 beginnt und Zahlen bis 10 enthält. Zurückgegebene Werte können 0, 0.2, 3.3, 4, 5.5, 6.9, 8, 9 oder 9.99 sein, aber nicht 10 selbst.
  • Die Bedingung prüft, ob die zurückgegebene Zahl kleiner als 5 ist, und gibt in diesem Fall "Trick!" und andernfalls "Treat!' aus.
Manchmal ist es einfacher, mit ganzen Zahlen anstatt Fließkommazahlen zu arbeiten, so dass wir exakte Werte überprüfen können. Hier sind ein paar Funktionen, die Gleitkommazahlen in ganze Zahlen umwandeln:
  • round(): Rundet eine Zahl auf die nächste Ganzzahl ab, wenn der Dezimalanteil kleiner als .5 ist und rundet auf, wenn der Dezimalanteil .5 oder größer ist.
  • ceil(): Rundet eine Zahl immer auf die nächste ganze Zahl auf.
  • floor(): Rundet eine Zahl immer auf eine ganze Zahl ab.
Normalerweise wollen wir Zufallszahlen generieren, die relativ gleichmäßig ausgewählt werden. Wenn wir zum Beispiel eine Münze simulieren, dann erwarten wir eine gleiche Chance auf "Kopf" oder "Zahl".
Dieser Code erreicht dieses Ziel:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
   text("Heads", 200, 200);
} else {
   text("Tails", 200, 200);
}
Die Variable randFlip wird immer entweder 0 oder 1 sein, da sie floor() für den Rückgabewert von random(0, 2) aufruft.
Um dir ein Gefühl dafür zu geben, warum das so ist, hier ist das Ergebnis des Aufrufs von floor() mit verschiedenen Werten von random(0, 2):
random(0, 2)floor(result)
0.00
0.217…0
0.542…0
0.973…0
1.01
1.332…1
1.589…1
1.999…1
Die Rückgabewerte von random() sind zufällig, daher sehen sie nicht unbedingt so gleichmäßig verteilt aus wie die Werte in dieser Tabelle. Wenn du den Code für das Münzwerfen nur 10 Mal ausführst, siehst du vielleicht eine Folge von "Kopf" oder "Zahl". Wenn du ihn jedoch tausende Male ausführst und mitzählst, wirst du in etwa 50% der Fälle "Kopf" und "Zahl" sehen.
Als allgemeine Regel gilt: Wenn es unser Ziel ist, eine faire und gleichmäßige Verteilung von Integer-Werten zu erhalten, ist es am besten, floor() mit random() zu verwenden.
Die random() Funktion ist eine großartige Möglichkeit, deinen Programmen etwas mehr Abwechslung zu geben. Verwende sie jedoch vorsichtig: Finde den richtigen Zahlenbereich, entscheide, ob du die Zahlen runden musst und prüfe die Werte die herauskommen.
Du hast die Chance, das im nächsten Projekt selbst auszuprobieren!