srand et rand

Génération de nombres pseudos aléatoires

Inconnue 6665 lectures 5 commentaires 5/5 (4 votes)
Nous allons voir ici comment générer des nombres aléatoires. Nous allons devoir ici utiliser deux fonctions : srand et rand. La première de ces deux fonctions prend une valeur en paramètre et s'en sert comme "graine". C'est grace à cette fonction que la fonction rand pourra renvoyer une séquence de nombres aléatoires. Si vous passez deux fois le même nombre à srand, la fonction rand renverra toujours la même séquence. Une idée est donc de faire passer en paramètre à srand la valeur du timestamp (s'incrémentant à chaque seconde), ainsi la graine ne sera jamais deux fois la même (sauf si on fait deux srand dans un intervalle inférieur à 1 seconde). La signature de la fonction srand est la suivante :



Comme je l'ai expliqué tantot, cette fonction prend un argument qui servira de graine à la génération de nombres aléatoires grace à la fonction rand dont la signature est la suivante :



Cette fonction est toute simple. Elle ne prend pas d'argument et renvoie un nombre aléatoire compris entre 0 et RAND_MAX (cette constante est contenue dans stdlib.h et vaut au moins 32767). Il vous faudra utiliser l'opérateur modulo pour ramener le nombre dans un intervalle voulu.

Application



Nous allons ici faire un simple programme qui affiche 10 nombres entre 0 et 100.



ImageImageImage


Donc ici nous incluons time.h car nous allons utiliser la fonction time pour récupérer la valeur du timestamp qui servira de graine à la fonction srand. Nous commençons donc par déclarer une variable x qui servira de variable de contrôle à la boucle for. Ensuite, nous initialisons la graine avec la fonction srand en faisant passer time(NULL) en paramètre, cela renverra le timestamp et le passera en paramètre de la fonction srand.

Nous entrons ensuite dans la boucle for qui s'exécutera 10 fois. A chaque passage, elle va afficher la valeur renvoyée par rand modulo 100 pour ramener ce nombre dans un intervalle de 0 à 100.

Voter :

5 commentaires

  • dida a dit:

    20/04/2012

    quelle est la déférence entre gcc -o tp2 tp2.c et gcc tp2.c // le nom de fichier tp2 merci :)

  • sylestre a dit:

    11/03/2012

    merci bcp les gars le monde de partage est impeccable!!!!

  • Bob a dit:

    19/09/2011

    L'intervale ne se situe ni entre 0 à 100 ni entre 0 à 99, il se situe entre 1 à 100 puisqu'il fait x + 1

  • StormNewbie a dit:

    18/01/2011

    Vous avez indiquez que srand et rand faisaient appelle à "stdlib.h" mais dans le programe de test vous n'y faite pas référence.

  • PascalNewbie a dit:

    05/11/2010

    L'intervalle se situe non pas de 0 à 100 mais de 0 à 99 !

Ajouter un commentaire