O'Reilly logo

PHP 5 Kochbuch, Third Edition by Stephan Schmidt, Ulrich Speidel, Matthias Brusdeylins, Carsten Lucke, Adam Trachtenberg, David Sklar

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required