Problème avec "randomize" sous C

Fermé
seb - 6 août 2004 à 10:48
 seb - 10 août 2004 à 11:39
Hello tout le monde! Je débute la prog en C, et là je suis un peu paumé...
Je suis en train d'écrire un petit prog qui simule un dé: classique. Je compile avec lccWin32, et je rencontre un gros problème avec la fonction "randomize".
En effet le compilateur ne reconnait pas cette "fonction"; j'ai pourtant chargé "stdlib" mais çà ne fonctionne pas.
J'avais déjà rencontré des problèmes avec la fonction "random". Le cours que j'utilise préconise l'emploi de cette fonction, mais j'ai trouvé une alternative avec rand...
Mais le problème c'est que je n'arrive pas à trouver un substitut à cette fonction randomize: donc à chaque fois que je lance l'executable, mon dé virtuel me donne toujours le même chiffre...alors si suelqu'un aurait une idée....merci énormément d'avance!!!

10 réponses

grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
6 août 2004 à 11:11
Salut,

Je pense que tu dois faire
#include <time.h>

pour le randomize.

Michael.


Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
6 août 2004 à 11:18
tu trouvera ta fonction dans time.h je crois

sinon, ya mieu encore pour les nombres aleatoires par exemple avec GetTickCount et srand tu peux donner un nombre aleatoire compris entre 2 nombres avec le modulus %
exemple :

#include "time.h"

void main()
{
int a;

srand(GetTickCount ());
a=rand()%30;
printf(" %d",a);
}

ce code va donner un nombre aleatoire a a entre 1 et 30
random() et randomize(), c'est spécifique à C++ Builder, même si c'est dans les fichiers d'includes standard. Evite de les utiliser
Borland a tendance à "inventer" des fonctions "standards", comme gotoxy(), clrscr(), textcolor(), textbackground(), setcursortype(), wherex(), wherey().

COIN!
0
Hello Michael!
Je viens de regarder dans time.h, mais elle ne contient pas randomize...
Tiens voilà un bout du code...

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int nbr_alea; //varaible du nbr aléatoire
int u; //variable utilisateur

randomize();
clrscr();
nbr_alea = rand () % 10 +1;
printf("%d\n", nbr_alea);

printf("Essayer de trouver le nbr mystere!!!\nSaisissez un chiffre entre 1 et 10:\n");


return (0);
}
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Voili Voilou... au moment de compiler, il mets la chose suivante:
undefined reference to _randomize
0
Merci Canard!!! J'avais poster à la va-vite!!!! Cà marche maintenant!
Si tu savais le temps que j'ai passer à essayer de bidouiller une pseudo solution pour contourner le problème. Merci enocre!!! Coin coin à toi!!!!
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
9 août 2004 à 10:18
De rien l'ami

COIN!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
9 août 2004 à 19:15
salut!

vous voulez du C portable ANSI ISO de chez time.h ?
voilà comment échaper à randomize

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

int main(void)
{
   int i;
   time_t t;

   srand((unsigned) time(&t));
   printf("10 nombres aleatoires de 0 à 99\n\n");
   for(i=0; i<10; i++)
       printf("%d\n", rand() % 100);
   return 0;
}

trouvé dans les exemples de C++ Builder ;-)
a+
¤
0
Onde2Choc Messages postés 299 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 24 février 2006 4
10 août 2004 à 09:35
lol !! random() : spécificité Borland. randomize() : spécificité Borland. rand() : c'est du bon ANSI !
Comme quoi...

BOOM !
Onde2Choc, pour ne pas vous servir...
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
10 août 2004 à 10:38
ba non justement ^^

COIN!
0
Merci pour vos réponses et vos éclairages sur la chose...
Canard a dit:
srand(GetTickCount ());
a=rand()%30;
printf(" %d",a);
}

ce code va donner un nombre aleatoire a a entre 1 et 30

Comment fais tu pour déterminer les deux bornes??? Par ex un nrb aléatoire entre 15 et 27?
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
10 août 2004 à 11:25
le %30 crorespond a un modulo 30 pour faire entre 15 et 27 je te conseil de calculer la taille de ton interval:
27-15=12
donc un rand()%12
et de rajouter 15 pour te replacer dans l'interval voulu:
donc a = 15+rand()%12

des maths quoi ^^
COIN!
0
Ok merci! Dis comme çà^^COIN à toi aussi!
0