Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/12/2007, à 22:51

binoua

Langage C : la fonction rand()

Salut à  tous,

Je suis désolé mais je vais peut être en choquer certains par mon langage très peu convenable...
J'aimerai qu'on me dise si je n'ai rien compris à  comment marche la fonction rand() ou si cette fonction c'est vraiment du pipi de chat (je vous avais prévenu je parle de manière assez crue).

Je m'explique. Voici ma source. Et bien croyez moi si vous voulez mais je peux exécuter ce programme 10 fois, j'obtiendrais toujours le même fichier de sortie (je peux le prouver !!)

Quelqu'un a-t-il une explication ??
Merci de votre aide.


#include <stdio.h>
#include <stdlib.h>

void ecriture ();

int main (){
  ecriture (2000);
  return 0;
}


void ecriture (int nbrequetes){
  int i = 0;
  FILE * fichier = NULL;
  
  fichier = fopen ("tata.txt", "w");
  if (fichier != NULL){
    while (i <= nbrequetes){
      fprintf(fichier, "%d %d %d\n", rand()%100, rand()%100, rand()%10000);
      i++;
    }
    fclose (fichier);
  }
  else {
    printf("Erreur d'ouverture du fichier\n");
    exit(EXIT_FAILURE);
  }
}

Hors ligne

#2 Le 22/12/2007, à 23:09

slasher_fun

Re : Langage C : la fonction rand()

La fonction rand() doit être initialisée à  des valeurs différentes pour ne pas donner toujours la même chose smile

Pour faire ça simplement, ajoute time.h dans les librairies inclues, et fais srand(time(NULL)); au début du programme smile

Dernière modification par slasher-fun (Le 22/12/2007, à 23:09)

Hors ligne

#3 Le 23/12/2007, à 00:26

Yannick_LM

Re : Langage C : la fonction rand()

Juste pour en rajouter une couche.
(c'est pas vraiment un bug, et ça peut être vu comme une fonctionnalité)

Imagine un graphiste qui fait appel à  de l'aléatoire pour faire une images.
(je sais pas moi, une chaà®ne de montagne)

ll peut lancer plusieurs fois une succession de nombres aléatoires avec des "graines" différentes (la valeur d'initialisation).
Comme ça, une fois qu'il a trouvé une chaà®ne convenable, il la garde.
(du hasard reproductible, en quelque sorte)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#4 Le 23/12/2007, à 11:11

binoua

Re : Langage C : la fonction rand()

ok merci bien !!
justement j'avais vu l'histoire du "srand(time(NULL))"  et je me demandais l'interet !!!

une dernière chose : je suppose que comme il n'y aura jamais plus de 23 decembre 2007 11:09:24 du coup on se rapproche d'une fonction vraiment aléatoire n'est-ce pas ?
Ce que je veux dire c'est que si je fais tourner mon prog aujourd'hui à  11h09 je n'obtiendrait sans doute pas les mêmes résultats l'année prochaine à  11h09 sommes nous d'accord ?

Hors ligne

#5 Le 23/12/2007, à 16:05

slasher_fun

Re : Langage C : la fonction rand()

C'est cela smile

Hors ligne

#6 Le 23/12/2007, à 20:56

binoua

Re : Langage C : la fonction rand()

en vous remerciant ! smile:)

Hors ligne

#7 Le 24/12/2007, à 00:14

Watchwolf

Re : Langage C : la fonction rand()

il faut juste faire attention aux initialisations qui se font dans la même seconde. Personnellement j'utilise time(NULL) avec getpid(), comme ca pas de pb.

Hors ligne

#8 Le 24/12/2007, à 00:41

binoua

Re : Langage C : la fonction rand()

si je n'étais pas un relou je chercherais à  quoi sert la fonction getpid() mais là  comme je suis un mec pénible et que le nom de la fonction ne parle pas trop de lui même j'aimerai bien que quelqu'un développe svp smile:)

Hors ligne

#9 Le 24/12/2007, à 18:28

Watchwolf

Re : Langage C : la fonction rand()

man getpid smile

Hors ligne

#10 Le 26/12/2007, à 19:41

binoua

Re : Langage C : la fonction rand()

ouai je me doutais d'une réponse comme ça !!!!:):)

Hors ligne