Problème fonction pour générer un tableau 2D aléatoire en C
enroe
Messages postés3Date d'inscriptionmardi 22 décembre 2009StatutMembreDernière intervention23 décembre 2009
-
22 déc. 2009 à 15:27
biriatou
Messages postés3Date d'inscriptionvendredi 11 novembre 2005StatutMembreDernière intervention28 décembre 2009
-
25 déc. 2009 à 11:03
Salut à tous :)j'espère que quelqu'un pourra m'aider :(. parce que la je suis sur un projet de C (pour demain lol...)et j'ai une fonction qui me donne quelque chose que je comprend pas trop :(. donc alors la fonction prend en entrée un tableau 2D(int**) (avec de la mémoire alloué au préalable avant) et un nombre de joueur n. A la base le tableau est remplit de 0. Le but de la fonction est de remplir le tableau avec un minimum de 1 égal à(n*4).. (il faut au moin n*4 case contenant un 1).
Le reste des cases dois être remplit avec soit un 0 soit un 1 (c'est aléatoire).
donc ma fonction fonctionne normalement quand je l'utilise une fois. sauf que le problème c'est que je dois l'utiliser pour 2 tableau différent à l'affilé. et cela me donne 2 fois le même tableau :(. Je voudrais savoir si quelqu'un a une idée sur la raison de ce problème....^^.
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 22 déc. 2009 à 17:04
Bonjour,
Met l'appel à srand() en dehors de ta fonction, par exemple au début du main().
2 appels consécutifs à srand() avec la même valeur produisent les mêmes séries de valeurs aléatoires.
S'il y a moins d'une seconde entre les 2 appels à ta fonction ....
enroe
Messages postés3Date d'inscriptionmardi 22 décembre 2009StatutMembreDernière intervention23 décembre 2009 22 déc. 2009 à 17:13
salut thip, merci pour ta réponse. Je met le srand(time(NULL)); dans le main ca d'accord. mais ca changera en aucun cas la série de chiffre non ? sachant que entre les 2 tirages il y a moin de 2 secondes. Il faudrais que je fasse un wait/sleep ou quelque chose du genre ?
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 23 déc. 2009 à 07:58
Non, c'est à chaque appel à srand() que tu réinitialise la série. Donc, tu mets srand() dans main(), la série est initialisée, tu appelles ta fonction une première fois, et, à la deuxième, rand() continue la série sans la reprendre au début. Si srand() est dans la fonction, la série est réinitialisée avec time(), qui n'a certainement pas changé depuis l'appel précédent; Donc la même série.
biriatou
Messages postés3Date d'inscriptionvendredi 11 novembre 2005StatutMembreDernière intervention28 décembre 2009 25 déc. 2009 à 11:03
Salut Enroe
Est ce que tu es vraiment oblige de cree un tableau en 2 dimensions.Tu peux faire la même chose avec un tableau a une dimension.C'est plus simple et pour les passages de parametres de fonction ca ne pose pas de probleme.