Standard-Bibliothek — `zufall`
Verfügbar — implementiert in Phase B.6.1+ (Spinoff aus
mathe). Vollständige Spec indocs/zufall.md.
Zufallszahlen, Listen-Auswahl und Mischen.
17.1 Aktivieren
nutze zufall
sag zufall.zahl() // komma in [0.0, 1.0)
sag zufall.ganz(1, 6) // ganz in [1, 6] — Würfel!
sag zufall.dezimal(0, 99.99) // dezimal in [0, 99.99)
17.2 Listen-Helfer
nimm karten = ["♠A", "♥K", "♦Q", "♣J"]
sag zufall.element(karten) // eine Karte zufällig
Mischen — zwei Varianten (das ist die neue Stdlib-Konvention E-063):
// Variante 1: gibt eine NEUE Liste zurück, Original bleibt
nimm orig = [1, 2, 3, 4, 5]
nimm gemischt = zufall.gemischt(orig)
sag orig // [1, 2, 3, 4, 5] ← unverändert
sag gemischt // z.B. [3, 1, 5, 2, 4]
// Variante 2: VERÄNDERT die Liste direkt
nimm xs = [1, 2, 3, 4, 5]
zufall.mische(xs)
sag xs // z.B. [4, 2, 5, 1, 3] ← jetzt durcheinander
Konvention: Funktionen, die einen neuen Wert zurückgeben, heißen wie das Ergebnis (Substantiv/Partizip): gemischt, sortiert, gefiltert. Funktionen, die etwas mutieren, heißen wie der Befehl (Imperativ): mische, sortiere, filtere. Diese Regel gilt für die ganze Stdlib.
17.3 Reproduzierbarkeit für Tests
zufall.setze_saat(42)
nimm a = zufall.zahl()
zufall.setze_saat(42)
nimm b = zufall.zahl()
sag a == b // wahr — gleiche Saat, gleiche Folge
Wichtig: Ohne setze_saat ist die Saat aus der Wallclock + Prozess-Entropie — also bei jedem Programm-Lauf anders.
17.4 Was nicht in zufall ist
- Kryptographisch sichere Zufallszahlen — kommt mit
krypto-Modul (für Tokens, Passwörter, Salt).zufallist gut gleichverteilt aber nicht für Sicherheit gedacht. - Verteilungs-Sampling (Normalverteilung etc.) — kommt später, evtl. als
statistik-Modul.