Tach.
function Zufall()
{
global $BenutztZufall;
if (count($BenutztZufall) == 10) // Es wurden also bereits alle Zahlen genau n-mal zurückgegeben
$BenutztZufall = array();
$neuerZufall = mt_rand(1, 10);
while (in_array($neuerZufall, $BenutztZufall))
$neuerZufall = mt_rand(1, 10);
$BenutztZufall[] = $neuerZufall;
return $neuerZufall;
}
Du möchtest also bei 10 aufeinanderfolgenden Aufrufen am Ende alle Zahlen von 1 bis 10 abgedeckt haben? Dann ist obiges nicht so gut geeignet. Je mehr Zahlen Du schon in $BenutztZufall hast, desto länger mußt Du würfeln, bis eine der verbleibenden Zahlen als Ergebnis herauskommt.
Erstell Dir lieber ein Array der möglichen Ergebnisse (in Deinem Fall also die Zahlen von 1 bis 10), misch dieses Array zu Beginn und arbeite Dich bei den "Ziehungen" von Anfang bis Ende des Arrays durch.
Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.