Kiste
EN

Standard-Bibliothek — `zufall`

Verfügbar — implementiert in Phase B.6.1+ (Spinoff aus mathe). Vollständige Spec in docs/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). zufall ist gut gleichverteilt aber nicht für Sicherheit gedacht.
  • Verteilungs-Sampling (Normalverteilung etc.) — kommt später, evtl. als statistik-Modul.