Rand() et RAND_MAX
Résolu
LittDev
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Salut
Pour le besion d'un programme, j'ai besion de générer un nombre > à RAND_MAX, comment je dois faire pour changer sa valeur ? Ou est que je devrais plutôt créer une nouvelle fonction rand() ????
Merci
Pour le besion d'un programme, j'ai besion de générer un nombre > à RAND_MAX, comment je dois faire pour changer sa valeur ? Ou est que je devrais plutôt créer une nouvelle fonction rand() ????
Merci
2 réponses
Bonjour,
On ne peut pas changer la valeur de RAND_MAX.
On peut créer un nouvelle fonction pour des nombres plus grands.
On ne peut pas changer la valeur de RAND_MAX.
On peut créer un nouvelle fonction pour des nombres plus grands.
#define RAND_MAX2 ((RAND_MAX+1uLL)*(RAND_MAX+1uLL)-1) unsigned long long rndLL() { return ((unsigned long long)rnd())*(RAND_MAX+1uL) + rnd(); }
Bonjour,
Il suffit juste de faire une multiplication...
Tu divises par RAND_MAX et tu multiplies par la valeur max de ton choix.
Exemple :
Oui, il y a d'autres alternatives à rand(time(NULL)).
Qu'est-ce qu'il te fait dire que ça n'est plus "aléatoire" ?
Cdlt,
Il suffit juste de faire une multiplication...
Tu divises par RAND_MAX et tu multiplies par la valeur max de ton choix.
Exemple :
unsigned long long alea(const unsigned long long max) { return (unsigned long long)((double)rand()/RAND_MAX*max); }
Oui, il y a d'autres alternatives à rand(time(NULL)).
Qu'est-ce qu'il te fait dire que ça n'est plus "aléatoire" ?
Cdlt,
J'ai l'impresson que la fonction n'est plus vraiment "aleatoire" on dirait