stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 143

Tag 143 von 365 · Fortgeschritten · Monat 5: Speicher und Struktur

Zufall mit rand

rand liefert jedes Mal eine neue Zahl von 0 bis unter 1. Mit mul, add und floor wird daraus ein Würfel, eine Zufallsfarbe oder flackerndes Licht.

Lektion 12 Min. Woche 21

Das lernst du heute

  • Zufallswerte zwischen 0 und 1
  • Bereiche skalieren
  • Lichteffekte

Im Notgang soll eine Lampe flackern wie ein Wackelkontakt, über der Bar wechselt eine LED-Anzeige bunt die Farbe. Mit festen Werten oder einem Zähler wirkt das wie ein Uhrwerk – nach drei Sekunden sieht jeder das Muster. Was fehlt, ist Zufall.

rand: eine Zahl zwischen 0 und 1

rand z      # 0 <= z < 1, jedes Mal neu

rand schreibt bei jedem Aufruf eine neue Zufallszahl ins Register. Sie ist mindestens 0 und immer kleiner als 1 – genau 1 kommt nie heraus. Brauchst du denselben Zufallswert zweimal, rufst du rand einmal auf und benutzt danach das Register. Ein zweiter Aufruf liefert eine andere Zahl.

Bereiche skalieren

Aus 0 bis 1 machst du jeden Bereich mit mul (Breite) und add (Anfang):

ZielRechnung
0 bis unter 10mul z z 10
20 bis unter 30mul z z 10, dann add z z 20
ganze Zahl 0 bis n − 1mul z z n, dann floor z z
Würfel 1 bis 6mul z z 6, floor z z, add z z 1
„ja“ in 30 % der Fälleslt ja z 0.3

Die letzte Zeile ist oft die nützlichste: slt vergleicht die Zufallszahl mit einer Wahrscheinlichkeit und liefert in etwa 30 von 100 Fällen eine 1.

Lichteffekte

Eine Lampe kennt nur On. Flackern heißt also: Jeden Takt wird neu gewürfelt, ob sie leuchtet.

rand z
slt an z WAHRSCH            # WAHRSCH = 0.8: an mit 80 %
sbn LAMPE HASH("Gang") On an

Eine LED-Anzeige kann zusätzlich die Farbe wechseln. Die zwölf Farben von Color.Blue (0) bis Color.Purple (11) sind einfach Zahlen:

rand z
mul farbe z FARBEN          # FARBEN = 12
floor farbe farbe           # 0 bis 11
sbn ANZEIGE HASH("Bar") Color farbe
Achtung

Nimm für ganze Zufallszahlen floor, nicht round. round macht aus 0 bis unter 12 dreizehn mögliche Werte: Eine Farbe 12 gibt es gar nicht, und die 0 und die 12 kommen nur halb so oft wie alle anderen.

Tipp

Jeden Takt neu würfeln ergibt bis zu zwei Wechsel pro Sekunde – für Flackern gut, für ruhige Stimmung zu hektisch. Würfle stattdessen eine Wartezeit, etwa 2 bis 8 Takte, und zähl sie herunter, bevor die Lampe wieder umschaltet.

Übung

Aufgabe

Ein Hebel „Party“ schaltet die LED-Anzeige „Bar“ in den Partymodus.

  • Hebel an (Open = 1): jeden Takt eine Zufallsfarbe von 0 bis 11 auf Color und eine Würfelzahl von 1 bis 6 auf Setting
  • Hebel aus: Farbe Color.White, Setting 0
  • Fehlt der Hebel, gilt „aus“

Der Hebel wird schon gelesen, die Ausgabe steht auch schon da. Es fehlen die beiden Zufallswerte. round ist hier verboten.

Hinweise

Hinweis 1

Zufallsfarbe: rand z, mul farbe z FARBEN, floor farbe farbe.

Hinweis 2

Würfel: ein zweites rand z, mal SEITEN, floor, dann add zahl zahl 1.

Hinweis 3

Die select-Zeilen am Ende wählen schon zwischen Zufall und festen Werten.

Quiz

5 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator bestanden
  • Quiz mit mindestens 60 % bestanden

Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.

Fehler in dieser Lektion melden

Zum Melden bitte anmelden. Anmelden

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall