Zufallszahlengeneratoren (Random Number Generators, RNGs) generieren tatsächlich Pseudozufallszahlen, da es unmöglich ist, tatsächlich eine WIRKLICHE Zufallszahl zu generieren. Die einzigen wirklich wirklich zufälligen Dinge sind Taten Gottes, wie der Blitz.
Dieser Wikipedia-Artikel kann Ihnen möglicherweise bei der Erklärung helfen: http://en.wikipedia.org/wiki/Random_number_generators
Soweit ich weiß, gibt es im Grunde genommen zwei Teile eines RNG: den Samen und dann die Zufallszahl, die aus diesem Samen ausgewählt wurde. Wenn Sie das RNG aussäen, geben Sie es einem Startpunkt gleich. Dieser Startpunkt enthält dann eine Reihe von Zahlen, die sich "im Inneren" befinden, aus denen das Programm auswählt. In PHP können Sie srand () verwenden, um die Seeds zu "mischen", sodass Sie fast immer eine andere Antwort erhalten. Sie können dann rand (min, max) verwenden, um in den Startwert einzusteigen und eine Zahl zwischen min und max (einschließlich) auszuwählen.
WARNUNG, MÖGLICHE KÄSEANALOGIE VORAUS!
Stellen Sie sich jeden Samen als eine Eiskiste vor und dann die Zufallszahlen als Eiswürfel. Angenommen, Sie haben 1000 Eistruhen und jede Truhe enthält 1000 Eiswürfel. Auf dem Jahrmarkt wählen sie eine Kühltruhe aus, um Getränke zuzubereiten, und sie können nur einen Eiswürfel verwenden. Sie benötigen jedoch nur Eiswürfel, die größer als 1 Kubikzoll sind. Also wählen sie zufällig eine Truhe aus diesen 1000 Truhen aus und dann wählen sie zufällig einen Eiswürfel in dieser Truhe aus. Wenn es für die gewünschte Größe funktioniert, wird es verwendet. Wenn nicht, legen sie es mit den anderen in die Truhe zurück. Wenn sie es ein bisschen lustiger machen wollen, tauschen sie vorher die Truhen aus, damit sie nichts merken, wenn man so will!
Was die physische Auswahl des Ausgangs und der Zufallszahl durch PHP angeht, so habe ich nicht genug Wissen darüber (worüber Sie sich wahrscheinlich am meisten gewundert haben!). Ich würde nicht versuchen, die rand () - Funktion zu wiederholen. Für die meisten webbasierten Anwendungen, die Sie erstellen, sollte rand () für jede beliebige Zahl ausreichen, die Sie benötigen.
Schauen Sie sich auch lineare Kongruenzgeneratoren an. Vielleicht suchen Sie mehr danach, wenn Sie die schmutzigen Details sehen möchten: http://en.wikipedia.org/wiki/Linear_congruential_generator
Hoffe das hilft!