PHP-Klasse zur Generation von Zufallszahlen aus Bereichen

Habe eben eine kleine PHP-Klasse zur Generation von Zufallszahlen basierend auf angegebenen Zahlenbereichen geschrieben. Wozu man das braucht?

Nun jeder kennt den PHP-Zufallsgenerator, mit dem man z. B. ganz einfach eine Zahl zwischen 1 und 100 generieren kann:

1<?php
2
3echo(rand(1,100));
4
5?>

Doch was ist wenn ich eine Zahl zwischen 1 und 100, 200 und 300 oder 400 und 500 generieren will? Falsch wäre die Verwendung des PHP-Zufallsgenerators mittels:

1rand(1, 500);

Warum? Ganz einfach, der Generator denkt sich eine Zahl zwischen 1 und 500 aus - und das kann z. B. auch 259 sein - und die sollte es mit oben genannter Aufgabenstellung ja nicht geben. Genau hier setzt meine Klasse an - mittels Konstruktor werden die erwünschten Ranges angegeben und aus diesen wird dann eine Zufallszahl generiert und übergeben. Also beispielsweise für die oben genannte Aufgabenstellung:

1$bla = new rangeRandom("1-100", "200-300", "400-500");
2 echo($bla->getRandom());

Genug der Worte - hier der Quellcode: http://www.spongedpaste.com/index.php?l=f9a325eeb5

 1class rangeRandomMit /* Klasse zur Berechnung von Zufallszahlen aus mehreren Bereichen */ {
 2
 3//Deklarationen var $ranges=array();
 4
 5function rangeRandom($var) /* Konstruktor */ { for($i=0;$i<func_num_args($var);$i++) /* Erstellen eines Arrays mit als Parameter uebergebenen Bereiche */ { $this->ranges[$i]=func_get_arg($i); } }
 6
 7function returnArray() /* Array zurueckgeben */ { return $this->ranges; }
 8
 9function getRandom() /* Eine Zufallszahl aus den definieren Bereichen uebergeben */ {
10
11//Eine zufaellige Bereichs-ID beziehen $tempRange = rand(0, (sizeof($this->ranges)-1));
12
13//Eine Zufallszahl aus dem Bereich beziehen $vorkommenMinus = stripos($this->ranges[$tempRange], '-');
14
15//Rahmenwerte definieren $rangeA = substr($this->ranges[$tempRange], 0, $vorkommenMinus); $rangeB = substr($this->ranges[$tempRange], $vorkommenMinus+1, strlen($this->ranges[$tempRange])-$vorkommenMinus);
16
17//Debug-Ausgaben --> testing //echo("In ".$this->ranges[$tempRange]." kommt - an ".$vorkommenMinus.".Stelle vor.<br />Range ==> ".$rangeA." - ".$rangeB."<br />");
18
19//Zufallszahl uebergeben return(rand($rangeA, $rangeB));
20
21}
22
23}
24
25?>