GMP random function

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 4 août 2004 à 13:13
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 4 août 2004 à 14:54
Hello!

J'ai un bug bizarre... j'utilise les appels suivants pour créer un nombre au hasard:

#include "gmp.h"
...
mpz_t prime_number, rand_n;
...
gmp_randstate_t state;
...
mpz_init(prime_number);
mpz_init(rand_n);
...
gmp_randinit_default(state);
mpz_urandomm(rand_n,state,prime_number);

mpz_out_str (stdout, 10, prime_number); // Affichage

mpz_clear(rand_n);
mpz_clear(prime_number);
...

et j'obtiens systématiquement le même chiffre!! Quelqu'un a une idée? Est-ce qu'il faudrait réinitialiser le "state"? Si oui comment?

3 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
4 août 2004 à 14:05
Pkoi tu utilises pas les fonctions standard plutot ke tt ca ?
exemple :

srand(GetTickCount()); //1 appel ds tt le prog

puis rand(); pour recup le nombre pseudo-aléatoire..

C pas plus simple ?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
4 août 2004 à 14:34
ben tout simplement parce que je suis sur un projet de crypto et j'ai besoin d'utiliser des nombres monstrueux, du coup j'emploie la librairie GMP...
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
4 août 2004 à 14:54
Ben en fait, y a une variante, mais pas élégante:

ajouter...

srand(time(NULL)); rdSeed = rand();
mpz_mul_ui(rand_n, rand_n, rdSeed);

Ca marche, mais niveau sécurité c'est zéro! A n'utiliser que pour des tests!
0
Rejoignez-nous