Il y a beaucoup pseudo-random number generators. Ils ne sont pas vraiment aléatoires, mais ils sont de qualité différente, se distinguant par leurs propriétés statistiques et séquentielles et à quoi ils sont applicables.
Cela dépend beaucoup de "comment vous en avez besoin au hasard". S'il a juste besoin de « regarder au hasard à un être humain », générateurs simples qui ressemblent:
rnd = seed; // some starting value
rnd = (a * rnd + b) % c; // next value
...
Pour des valeurs bien choisies de a, b et générateurs cCes sont ok pour les tests statistiques simples. Une discussion détaillée et des valeurs communes pour ces you find here.
Une approche intéressante est de collecter autant de données « externes » possible - comme le temps entre les mouvements de pressions sur les touches souris, la durée du disque se lit comme suit, etc. -, et utiliser un algorithme qui accumule aléatoire tout en rejetant la dépendance. C'est mathématiquement difficile (IIRC il n'y a pas si longtemps, une attaque critique a émergé sur la base de l'un d'entre eux n'étant pas aussi aléatoire que pensé).
Seulement très peu d'applications spéciales utilisent une source de matériel externe vraiment aléatoire - quoi que ce soit entre un amplificateur ouvert et imput désintégration radioactive.
Ils sont vraiment utiles. :) –