2.6 Verzerrte Zufallszahlen generieren

Problem

Sie möchten Zufallszahlen generieren, wobei diese Zahlen aber ungleichmäßig verteilt sein sollen, sodass Zahlen in bestimmten Bereichen häufiger auftauchen als andere. Beispielsweise möchten Sie eine Reihe von Werbebanner-Einblendungen verteilen, die proportional zur Anzahl der für jede Werbekampagne noch übrigen Einblendungen ist.

Lösung

Verwenden Sie die Funktion pc_rand_weighted(), die Listing 2.1 zeigt.

// Gibt den gewichtet-zufällig ausgewählten Schlüssel zurück function pc_rand_weighted($numbers) { $total = 0; foreach ($numbers as $number => $weight) { $total += $weight; $distribution[$number] = $total; } $rand = mt_rand(0, $total - 1); foreach ($distribution as $number => $weights) { if ($rand ...

Get PHP 5 Kochbuch, Third Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.