Nombre aleatoire SANS rand
Résolu
owengas
Messages postés
26
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche a obtenir un nombre aleatoire entre 1 et 4 SANS utiliser la fonction random .
Une petite idée ?
Je cherche a obtenir un nombre aleatoire entre 1 et 4 SANS utiliser la fonction random .
Une petite idée ?
3 réponses
-
Bonjour,
Tu peux utiliser la suite suivante
Un+1 = ( 1103515245 * Un + 12345 ) % 2147483647
Pour U0, tu peux prendre time(NULL); et voilà.
A chaque calcul, tu auras un nombre pseudo aléatoire.
C'est le générateur utilisé par Unix d'ailleurs. -
Bonjour,
Il vous faut une fonction qui génère un nombre différent à chaque appel de celle-ci comme le fait rand, ce n'est "aléatoire" que lorsqu'on y ajoute une valeur extérieur par exemple le temps avec time(NULL).
Pour que la fonction garde le nombre utilisez une variable static exemple :int monrand(){ static unsigned int n=1; n=n+5; return n; }
à chaque appel de cette fonction n va s'incrémenter de 5 :
n=6
n=11
n=16
etc.
à vous de créer une formule pour remplacer n+5 par exemple en faisant un mix avec le temps ?
puis vous pourrez l'utiliser comme rand() : monrand()%4+1 -
super merci beaucoup d'avoir pris du temps pour me repondre, c'est chouette
des bises