Zufall SQL optimieren

strex

Erfahrenes Mitglied
Ich habe ein script gewählt, dass aus einer MySQL die Anzahl der zur Verfügung stehenden Server einen zufällig wählt. Das Problem ist nur, dass dies nicht wirklich zufällig ist. Wie kann ich dies optimieren?

Code:
$dl_server_m2 = mysql_query("SELECT COUNT(*) as count FROM `config`");
                         while ($dl_server_m22 = mysql_fetch_row($dl_server_m2)) {
                                $dl_server_m = $dl_server_m22[0];
                 }
                                
                 # Zufälliger Downloadserver ermitteln
                 $random_dl_server = mt_rand(1, $dl_server_m);
             
                 # Auslesen des DL-Servers
                  $sql_server_d = mysql_query("SELECT `server` FROM `config` WHERE `id` = '$random_dl_server'");
                       while ($sql_server_d2 = mysql_fetch_row($sql_server_d)) {
                              $dl_server = $sql_server_d2[0];	
                }
 
Ist die Frage ob der Zufall es verbietet, ob Zahlen doppelt sein dürfen.
Wobei es in der Informatik natürlich schwer ist, einen echten Zufall zu erzeugen.

Wenn ich mich recht entsinne, wird ein Zufall durch physikalische Situationen perfekter. So wird zum Beispiel in einer LAN Netzwerkkarte das Weißrauschen verwendet für die Zufallsbestimmung (Holdtimer nach Collisions auf dem Bus).

Um mal bei dem Beispiel hier zu bleiben.
Es ist schon eine Frage der maximalen Anzahl der Server. Sind es max. 3 Server so ist die Wahrscheinlichkeit höher einen doppelten Wert zu erhalten, also zum Beispiel bei 1000 Server (oh je, das geht in die Stochastik oder?)

Du könntest jetzt natürlich auf /dev/urandom zugreifen, jedoch habe ich nicht getestet, wie "zufällig" die Zahlen nun sind.

PHP:
$x = exec("echo $(( 1+(`od -An -N2 -i /dev/urandom` )%(".$max_server.") ))");
 
Zurück