Nombre aleatoire SANS rand

Résolu/Fermé
owengas Messages postés 13 Date d'inscription jeudi 6 décembre 2012 Statut Membre Dernière intervention 24 février 2013 - 14 févr. 2013 à 17:40
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 févr. 2013 à 21:20
Bonjour,
Je cherche a obtenir un nombre aleatoire entre 1 et 4 SANS utiliser la fonction random .

Une petite idée ?


3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 févr. 2013 à 21:20
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.
1
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
14 févr. 2013 à 18:38
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
0
owengas Messages postés 13 Date d'inscription jeudi 6 décembre 2012 Statut Membre Dernière intervention 24 février 2013
14 févr. 2013 à 18:55
super merci beaucoup d'avoir pris du temps pour me repondre, c'est chouette

des bises
0