SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013
-
24 déc. 2008 à 11:30
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013
-
24 déc. 2008 à 17:21
Bonjour je suis a la recherche d'un generateur de nombre aleatoire utilisant un phenomene physique de l'ordinateur. Sur ce site j'en ai trouvé un qui utilise le bruit blanc de l'entree micro mais meme si celui ci est aleatoire, les resultats ne sont pas assez aleatoire, trop de dominance de certains chiffres.
J'ai decouvert la librairie BOOST (de la TR1) et sa fonction random_device() mais je ne suis pas arrivé a installer la librairie, et je preferais un code simple que je n'aurais pas a nettoyer pour ne garder que l utile.
Je suis prenneur de toute les pistes possible :).
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 24 déc. 2008 à 13:16
Salut,
Pourquoi ne pas tout simplement utiliser rand et srand ?
Correctement initialisé, ces fonctions doivent fournir une distribution qui paraît tout à fait aléatoire.
Le tout est de l'initialiser avec une valeur aléatoire via srand pour qu'elle ne répète pas son enchaînement à chaque fois. C'est là qu'une grandeur physique peut être intéressante. On peut utiliser tout bêtement l'horloge via GetTickCount. Si le générateur risque d'être initialisé plusieurs fois par millisecondes (Y a quand même peut de risque...) tu peux utiliser QueryPerformanceCounter. Si le générateur doit être initialisé plusieurs fois par 10 millionnième de seconde (Les perfs de QueryPerformanceCounter varies d'un PC à l'autre), tu peux utiliser RDTSC (Qui s'incrémente à chaque front processeur). Et là, tu es sûr que srand ne sera jamais appelé deux fois de suite avec la même valeur, sauf... Coincidence ! Mais là tu es dans le domaine de l'aléatoire !
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 déc. 2008 à 15:43
Le probleme c'est que pour des raisons de legalité (pour un jeu de hazard) il me faut vraiment un generateur aleatoire. Pour la fonction rand() j'ai vu des tests et elle sont loin d'etre purement aleatoire, ils on fait des images avec des points ( 0 si < 0.5 ou 1 si > 0.5) et il y a des figures qui apparaissent et qui se repettent. Donc quelqu'un peu augmenter ses chances de gain en connaissant les precedentes vlaeurs.
Et perso je ne sais pas si de reinitialiser la "graine" de la fonction me permettra de passer les tests.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 déc. 2008 à 17:21
Non, désolé, j'ai recherché rapidement et je suis tombé uniquement sur celui du php().
Sinon ce n'est pas un bug, microsoft a justement une fonction pour eviter ca (celle du tr1 que je n'arrive pas a installer) http://msdn.microsoft.com/en-us/library/bb982250.aspx mais je vais surement utiliser un algorithme, celui de Marsaglia avec 2 graines, une hardware et une tirée de l horloge de l'ordi.