begin process at 2012 05 29 19:23:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Nombre aleatoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Nombre aleatoire

samedi 14 juin 2008 à 19:36:36 | Nombre aleatoire

BastienL21

Bonjour à tous,
    Je développe actuellement une bataille navale en console. Pour placer les bateaux du PC et les tirs du pc, il faut que je crer un nombre aleatoire pour les coordonnés, ce que je fait avec :
    srand(time(NULL));
    X = ((rand() % (10 - 1 + 1)) + 1);

Or les nombres sortis sont très souvent les même et se situent toujours dans la diagonale de la grille. Quelqu'un sait-il pourquoi, y a-t-il une autre solution pour créer un nombre aléatoire plus "fiable"?
voici le main (Ce n'est que le début mais ca ne sert à rien que je continu tant que ce problème n'est pas réglé...) :

int main()
{
    SetConsoleTitle("Bataille navale");
    system("mode con: cols=25 lines=25");
    int X, Y;
    Espace();//Dessine la grille
    srand(time(NULL));
    X = ((rand() % (10 - 1 + 1)) + 1);
    srand(time(NULL));
    Y = ((rand() % (10 - 1 + 1)) + 1);

    gotoxy(X-1+X, Y+Y);
//Pour placer un "point" dont les coordonnés sont les nbrs aléatoire
    Color(0,12);
    printf(" ");
    getch();
    return 0;
}

le resultat (la grille est normale, mais les points toujours dans les cases qui contiennent un "*", la diagonale) :
 0 1 2 3 4 5 6 7 8 9
?????????????????????
?* ? ? ? ? ? ? ? ? ? ?A
?????????????????????
? ?* ? ? ? ? ? ? ? ? ?B
?????????????????????
? ? ?* ? ? ? ? ? ? ? ?C
?????????????????????
? ? ? ?* ? ? ? ? ? ? ?D
?????????????????????
? ? ? ? ?* ? ? ? ? ? ?E
?????????????????????
? ? ? ? ? ?* ? ? ? ? ?F
?????????????????????
? ? ? ? ? ? ?* ? ? ? ?G
?????????????????????
? ? ? ? ? ? ? ?* ? ? ?H
?????????????????????
? ? ? ? ? ? ? ? ?* ? ?I
?????????????????????
? ? ? ? ? ? ? ? ? ?* ?J
?????????????????????

(Dans la console, les colonnes sont biens alignées)


//Merci à tous de vous interesser à mon problème,
Cordialement,
B@stien
PS: Il me semble que code-source ne supporte pas les unicodes et affiche des "?" à la place (Pour la grille))
samedi 14 juin 2008 à 20:03:24 | Re : Nombre aleatoire

juju12

Réponse acceptée !
faut pas faire srand(time(null)) à chaque fois, ça sert à initialiser le générateur de nombres aléatoires une fois pour toutes.
(en début de code donc).
Cela dit, je suis pas sûr que ton problème vienne de là.
samedi 14 juin 2008 à 20:06:13 | Re : Nombre aleatoire

juju12

réflexion faite si ce doit être la cause de ton problème; comme tu fais srand(time(null)) avant de tiere x puis avant de tirer y, donc à intervalle très rapproché, ça doit initialiser rand au même point => X=Y à peu près à chaque fois.
samedi 14 juin 2008 à 20:14:24 | Re : Nombre aleatoire

BastienL21

Merci beaucoup juju, ca fonctionne avec juste un srand(time(NULL)) au début.
Merci beaucoup

//
Cordialement,
samedi 14 juin 2008 à 22:34:41 | Re : Nombre aleatoire

jfrancois

Bonsoir,

time(NULL) rend l'heure sous forme du nombre de secondes écoulées depuis le 1er janvier 1970 ! Donc plusieurs srand(time(NULL)) fait les uns derrière les autres comme ici (avec de grandes chances de tomber dans la même seconde de temps écoulé) donnent la même "graine" de départ pour le générateur de nombres pseudo-aléatoires et donc les mêmes tirages de nombres pseudo-aléatoires.

Jean-François



Cette discussion est classée dans : nombre, grille, time, srand, aleatoire


Répondre à ce message

Sujets en rapport avec ce message

generation nombre aleatoire sous dev cpp [ par dionysos ] Bonjour,En c, sous dev cpp, comment generer des nombre de façon aleatoire (entiers) ?Quelle(s) bibliotheque(s)?Quelle(s) fonction(s)?J'ai pensé à rand Liste de nombres aléatoires [ par byoushin ] Bonjour,je cherche comment générer une liste de nombre aléatoire.J'ai essayé en initialisant dans main srand(GetTickCount()); ou aussi srand(time(NULL srand ? [ par sebleboss2002 ] Salut à tous ! Je débute complètement en C, et je suis en train d'essayer de coder un jeu du "plus ou moins". Mais j'ai un problème au niveau de la g Generateur de nombre aleatoire non determinée. [ par SnOOpss ] Bonjour je suis a la recherche d'un generateur de nombre aleatoire utilisant un phenomene physique de l'ordinateur. Sur ce site j'en ai trouvé un qui nombre speudo aleatoire en c [ par flofloo ] bonjouyr tout le monde...je voudrais tout simplement qu'on m'explique comment marche les nombre speudo a l'aleatoire? j'ai fait une petite recherche s Nombre aleatoire [ par samaie ] Bonsoir j'ai un petit exercice que je n'arrive pas a faire.Il faut creer un nombre float aleatoire entre 0(inclu) et 1 (exlu).Si quelqu'un pourrai m'a savoir si un string n'est que numérique [ par nord666 ] Bonjour tout le monde!À première vue, utiliser un String pour stocker un chiffre est assez inscenser. Sauf lorsque le nombre maximal de caractère pour modulo et nombre de 66 chiffres [ par velvetwizard ] J'ai un problème à résoudre en C. « faire un un pgm C permettant de donner le résultat de A mod X.A étant un nombre de 66 et X= 1 à 100 » 1/ déjà Run time error, probleme menu [ par totoscill ] Bonjour,Je programme sous CVI 8.5. J'ai un problème lors de l'éxécution de mon programme. J'utilise une bar de menu et une foncion configuration des c nombre aléatoire [ par obasileus ] salut,je ne trouve pas la commande qui permet de faire générer à l'ordinateur un nombre aléatoireplease help me !!!! :-)merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales