4.9.3. Weighting

Für das Generieren von Zufallszahlen existiert die Patternklasse weighting. Wenn in dem Pattern lediglich Elemente aufgeführt werden, so werden Zufallsfolgen mit gleicher Gewichtung der Elemente erzeugt.

(next (new weighting :of '(1 2 3 4)) 20)

(3 2 2 4 4 4 2 2 2 3 2 3 1 3 3 3 1 2 1 4)

Um die Elemente zu gewichten, verwendet man an Stelle der Elemente Listen, deren ersten Position das Element und im Rest der Liste das Keywort :weight und das relative Gewicht dieses Elementes aufgeführt wird. Der Defaultwert für :weight ist 1. Im folgenden Ausdruck erscheint also die 1 im Durchschnitt doppelt so häufig, wie die anderen Elemente des Pattern.

(next (new weighting :of '((1 :weight 2) 2 3 4)) 20)

;; -> (4 1 1 1 1 2 1 2 2 3 3 4 2 3 3 2 2 1 4 2)

Das Keyworte :max und :min beziehen sich auf die Anzahl direkter Wiederholung eines Elementes aus einer Zufallsfolge:

(next (new weighting :of '((1 :max 1) (2 :min 2) 3 4)) 20)

;; -> (3 4 2 2 3 3 4 1 3 4 4 3 1 3 3 1 2 2 4 2)

;;; Zufallsfolge mit gleicher Gewichtung aller Elemente ohne direkte
;;; Wiederholung eines Elements:

(next (new weighting :of '((1 :max 1) (2 :max 1) (3 :max 1) (4 :max 1))) 20)

;; -> (3 2 3 4 3 1 4 2 1 4 1 3 1 3 4 2 1 4 1 2)

results matching ""

    No results matching ""