begin process at 2010 02 10 16:02:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

srand ?


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

srand ?

samedi 2 avril 2005 à 12:43:35 | srand ?

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énération de nombres aléatoires. Mon code est le suivant :

int Nombre()
{
 srand((unsigned) time(NULL));
 return (rand() % 999) + 1;
}


Mais voilà, il me retourne un nombre dépendant d'un timer (apparemment), car lorsque j'exécute le code plusieurs fois d'affilées, les nombres générés sont toujours proportionnellement croissants ! Or, je voudrais qu'il puisse me générer coup sur coup un 1, un 785, un 420... Et non pas des 780, 785, 790, 795...

Quelqu'un a-t-il une solution à ça ?

Merci d'avance !

samedi 2 avril 2005 à 13:27:56 | Re : srand ?

steve_clamage

Tu as compris ce que fais srand, comment fonctionne rand ?
srand((unsigned) time(NULL)); est à appeler une fois, au debut du programme par exemple.
rand est un générateur de nombre pseudo aleatoire (un mauvais d'ailleur).
samedi 2 avril 2005 à 13:48:56 | Re : srand ?

sebleboss2002

D'abord, merci de ta réponse, je savais que srand devait être appelé en début de programme, mais je ne l'avait pas fait... Enfin, maintenant c'est bon, merci de m'avoir mis le nez sur mon erreur :-)

Mais sinon, je suis assez intéressé par tout ce que l'on pourra m'apprendre sur les fonctions srand et rand.
Et d'ailleurs, pourquoi dis-tu que celle-ci est mauvaise ?


samedi 2 avril 2005 à 14:31:16 | Re : srand ?

steve_clamage

Le rand fourni par la bibliothèque standard fonctionne avec une graine (un entier que tu initialises avec srand) et chaque nombre généré par rand dépend du précédent. Mets srand(2) par exemple au debut du programme et tu auras toujours la meme sequence.
samedi 2 avril 2005 à 15:57:17 | Re : srand ?

Arnaud16022

Membre Club
un ordi ne peut pas générer comme ca des nombres aléatoires.
en gros ce qu'il fait c'est qu'il récupèere le tickcount (nbre de millisecondes depuis le boot) , il le triture un peu et il te le refourge comme ca, c'est minable
la seule maniere a ma connaissance d'avoir des nombres réellement aléatoires c'est un module externe , qui envoie des photons sur des miroirs semi-réfléchissants, un trtuc de ouf bourré de physique quantique, qui en plus dois valoir des millions.et puis pour l'usage qu'on en fait, rand() est tres bien.
ya eu quelques forums la dessus par ici...

++
Arnaud

_______________________
Omnia vincit labor improbus
samedi 2 avril 2005 à 16:41:49 | Re : srand ?

steve_clamage

Pour résumer, on va dire qu'il est impossible dans la pratique de générer de vrai nombre aléatoire. Celui fournit par a bibliothèque standard est suffisant pour une utilisation "simple" et est portable, mais cela reste un tres mauvais générateur de nombres pseudo aléatoire, les applications scientifiques disposent souvent de leur propre générateur.
vendredi 4 novembre 2005 à 13:53:43 | Re : srand ?

fandezizou

Bonjour
J'aimerai savoir s'il vous plait avec Dev C++ comment on efface l'écran parce ke clrscr() ne fonctionne pas avec Dev.
Merci

vendredi 4 novembre 2005 à 14:28:43 | problème

fandezizou

Salut à tous!!!
j'ai un peitit problème avec les nombres aléatoires

j'ai mis ça  mais ça ne marche pas kek'1 aurait une idée.
j'ai bien mis srand au début et tout mais je ne trouve pas la cause de mon pb.

srand((unsigned) time(NULL))

D1=rand()%6 + 1;

merci d'avance.



Cette discussion est classée dans : nombre, code, nombres, srand, coup


Répondre à ce message

Sujets en rapport avec ce message

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 Extraire deux nombres d'un nombre [ par cyberlewis ] Slt,Par exemple j'ai le nombre hexa : F5CBComment extraire ce nombre en deux (dans deux variables), ce qui donnerait : "F5" et "CB" svp ?Merci d'avanc Une Variable étant un opérateur (Borland c++ Builder) [ par cricri_b34 ] j'ai créer un petit programme avec Borland c++ Builder qui permet de pratiquer ses math...donc mon programme doit vérifier si le nombre entré par l'ut Générer des Caractèeres aléatoirement [ par cricri_b34 ] Jaimerais apprendra comment générer des caractères aléatoirement:Pour générer des nombre, j'utilise:rand() % 100 + 1je sait qu calculer la somme des chiffres d'un nombre donné - NTL et nombres ZZ [ par scelw ] Je dois faire un exercice.Sachant que c'est pour travailler avec des très grands nombres (de plusieurs millions de chiffres), il faut utiliser la clas if, else... besoin de coup de main [ par bdkiller ] Bonjour à tous!Voilà j'ai ceci comme code:if (Edit1->Text == ini->ReadString("userdata","username","")) if (Edit2->Text == ini->ReadStr (Hors Sujet) Petit coup de gueule [ par Jo ] Bonjour,Deajs je voudrai m'excuser d'utiliser le forum pour faire passer ce petit message, qui n'a rien a voir avec une demande d'aide ou de conseil d convertir les nombres en lettres [ par djamine ] salut les amisje cherche un code pour convertir les nombres (1 2 3 .....) en lettres ( un, deux , trois....)l'utilisateur donne le nombre et le progra Acces a chaque bit d'un nombre binaire [ par djemmy ] Je dois obtenir, à partir de 4 nombres décimals(compris entre 0 et 15), les 4 nombre en binaire correspondants. De ces nombres binaires je dois en fab nombres aléatoires en c++ [ par johanb ] bonjour a tous, voici mon problême.Dans un programme, je dois générer deux fois un nombre aléatoire entre 0 et n (appelé max dans le programme). Voici


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,326 sec (4)

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