Les générateurs de nombres aléatoires (RNG) génèrent vraiment des nombres pseudo-aléatoires, car il est impossible de générer réellement un nombre vraiment aléatoire. Les seules choses vraiment vraiment aléatoires sont les actes de Dieu, comme la foudre.
Cet article wikipedia pourrait vous aider dans l'explication: http://en.wikipedia.org/wiki/Random_number_generators
D'après ce que je comprends, il y a essentiellement deux parties d'un RNG: la graine, puis le nombre aléatoire choisi dans cette graine. Lorsque vous amorcez le RNG, vous lui donnez un équivalent à un point de départ. Ce point de départ a alors un tas de nombres qui sont "à l'intérieur" de celui que le programme choisit. En PHP, vous pouvez utiliser srand () pour "mélanger" les graines, donc vous obtenez presque toujours une réponse différente. Vous pouvez ensuite utiliser rand (min, max) pour entrer dans la graine et choisir un nombre entre le min et le max, inclus.
AVERTISSEMENT, ANALOGIE AU FROMAGE POSSIBLE À VENIR!
Considérez chaque «graine» comme une glacière, puis les nombres aléatoires comme des glaçons. Disons que vous avez 1000 coffres à glace et que chaque coffre contient 1000 cubes de glace à l'intérieur. À la foire du comté, ils choisiront une glacière pour commencer à utiliser pour les boissons, et ils ne peuvent utiliser qu'un seul glaçon. Cependant, ils n'ont besoin que de glaçons de plus de 1 pouce cube. Ils choisiront donc un coffre au hasard parmi ces 1000 coffres, puis ils choisiront un cube de glace à l'intérieur de ce coffre au hasard. Si cela fonctionne pour la taille souhaitée, ils l'utilisent. Si ce n'est pas le cas, ils le remettent dans la poitrine avec les autres. S'ils veulent le rendre un peu plus amusant, ils changent de coffre à l'avance pour une totale inconscience, si vous voulez!
Quant à la façon dont PHP choisit physiquement la graine et le nombre aléatoire, je n'ai pas assez de connaissances pour cela (c'est probablement ce que vous vous demandiez le plus!). Je n'essaierais pas de refaire la fonction rand (); pour la plupart des applications Web que vous ferez, rand () devrait suffire pour tout nombre aléatoire dont vous aurez besoin.
Consultez également les générateurs congruentiels linéaires, cela pourrait être plus ce que vous recherchez si vous voulez les détails sales: http://en.wikipedia.org/wiki/Linear_congruential_generator
J'espère que cela t'aides!