Mehrere verschiedene Zufallszahlen
September 2009
Diese kleine Funktion generiert mehrere Zufallszahlen, ohne dass dabei Zahlen mehrmals vorkommen können.
Die Funktion speichert die generierten Zahlen als Key in den Array, wodurch keine doppelt vorhandenen Zahlen entstehen können, da sie sich "überschreiben".
Wenn die gewünschte Anzahl Zufallszahlen erreicht ist, oder wenn alle Zahlen zwischen Minimum und Maximum bereits Verwendung finden, wird die Schleife abgebrochen und das Array mit den Zufallszahlen als Values zurückgegeben.
Folgende Funktion macht dasselbe wie oben, nur auf einem anderen Weg.
Siehe auch:
Die Funktion speichert die generierten Zahlen als Key in den Array, wodurch keine doppelt vorhandenen Zahlen entstehen können, da sie sich "überschreiben".
Wenn die gewünschte Anzahl Zufallszahlen erreicht ist, oder wenn alle Zahlen zwischen Minimum und Maximum bereits Verwendung finden, wird die Schleife abgebrochen und das Array mit den Zufallszahlen als Values zurückgegeben.
<?php
/*
@param int $quant # Anzahl Zufallszahlen
@param int $min # kleinstmögliche Zahl
@param int $max # grösstmögliche Zahl
@return array $randary
*/
function getRandoms($quant=1, $min=0, $max=1){
$randary = array();
while(!(count($randary) >= $quant || count($randary) > $max-$min))
$randary[mt_rand($min,$max)] = true; // Zufallszahl in Key speichern
return array_keys($randary);
}
?>
Mögliche Anwendung: Lotto.<?php
$randoms = getRandoms(6, 1, 45);
echo implode(', ', $randoms);
# Mögliche Ausgabe: 23, 8, 29, 42, 15, 33
?>
Folgende Funktion macht dasselbe wie oben, nur auf einem anderen Weg.
<?php
function getRandoms($quant=1, $min=0, $max=1){
$randary = range($min, $max);
shuffle($randary);
array_splice($randary, $quant);
return $randary;
}
?>
Allerdings ist letztere Funktion auch bei kleinen Parametern z.T. deutlich langsamer als die erste, und sie kann schnell mal das Memory-Limit knacken. Daher: nicht benutzen.Siehe auch:

Andere Einträge
- Ersetzen ohne HTML zu zerstören
- is_utf8() – auf UTF-8 prüfen
- Dateiendung erkennen
- Spamschutz mit Captcha
- array_map_recursive()
Danke!