View Full Version : DEV-C++ errori compilazione random e randomize
Salve a tutti,
Ho un problema con il compilatore dev-C++:
semplicemente non riesco a compilare in modo corretto le funzioni random e randomize che non le riconosce come tali e il compilatore me le da come variabili non dichiarate.
uso le librerie conio.h stdlib.h stdio.h.
Premetto che il borland non dà alcun problema.
random e randomize non sono funzioni standard del C. sono estensioni proprietarie della borland se non sbaglio.
puoi usare rand e srand che dev-c++ trova di sicuro.
ciao ;)
DanieleC88
14-12-2004, 10:12
Puoi usare anche random() e srandom(seme) [equivalente a randomize], ma naturalmente segui l'esempio di VICIUS per la compatibilità con l'ANSI C.
Creati una piccola macro:#define RAND(max) (int)((float)(max * rand())/(RAND_MAX/1.0f))
Vado a memoria, aspettati errori :)
Fenomeno85
29-12-2004, 10:33
allora randomize son tutte funzioni del borland ... meglio non usarle per avere un codice pulito e sicuro che ogni compilatore te lo compila senza problemi.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// stabilisce il massimo valore ottenibile
#define MAX_VAL 100
int main(void)
{
srand(time(NULL));
// avrai un valore compreso tra 0 e MAX_VAL
printf("%d\n", rand() % MAX_VAL);
system ("PAUSE");
return 0;
}
cmq se vuoi usare randomize devi fare così:
#include <stdlib.h>
#include <stdio.h>
#define MAX_VAL 100
int main(void)
{
randomize();
printf("%d\n", rand() % MAX_VAL);
return 0;
}
daniele adesso guardo la tua macro :D
~§~ Sempre E Solo Lei ~§~
Fenomeno85
29-12-2004, 10:36
Originariamente inviato da DanieleC88
Puoi usare anche random() e srandom(seme) [equivalente a randomize], ma naturalmente segui l'esempio di VICIUS per la compatibilità con l'ANSI C.
Creati una piccola macro:#define RAND(max) (int)((float)(max * rand())/(RAND_MAX/1.0f))
Vado a memoria, aspettati errori :)
si funziona
~§~ Sempre E Solo Lei ~§~
DanieleC88
30-12-2004, 21:41
Originariamente inviato da Fenomeno85
si funziona
Lo so, l'ho presa dalla manpage di rand da Linux :) (anche se è leggermente diversa da quella originale). Ecco la parte in cui ne parla: In Numerical Recipes in C: The Art of Scientific Computing (William H.
Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New
York: Cambridge University Press, 1992 (2nd ed., p. 277)), the follow-
ing comments are made:
"If you want to generate a random integer between 1 and 10, you
should always do it by using high-order bits, as in
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
and never by anything resembling
j=1+(rand() % 10);
(which uses lower-order bits)."
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.