PDA

View Full Version : randomize..quale libreria?


-Yara-
22-01-2005, 16:04
Salve a tutti...sto sviluppando un programma ma non riesco a capire perchè non va la funzione randomize();
In particolare ecco l'output di gcc (g++):

golf.cpp: In function `int main()':
golf.cpp:9: error: `randomize' undeclared (first use this function)
golf.cpp:9: error: (Each undeclared identifier is reported only once for each function it appears in.)

Ecco il codice :

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int main()
{

randomize();
int random(int num);
const int righe=20,lettere=20,buche=9,giocatori=20;
int gioco[giocatori][buche],i,j;
char concorrenti[righe][lettere];

cout<<"Inserisci i nomi dei concorrenti"<<endl;

/*Ciclo per l'inserimento dei nomi*/
for(i=0;i<righe;i++)
{
cout<<"Inserisci la persona numero "<<i<<" "<<endl;
fgets(concorrenti[i],20,stdin);
}

/*Ciclo per l'inserimento dei valori casuali nella matrice*/
for(j=0;j<giocatori;j++)
{
for(i=0;i<buche;i++)
gioco[i][j]=random(10);
}
for(j=0;j<giocatori;j++)
{
for(i=0;i<buche;i++)
cout<<gioco[i][j];
}

getchar();
}

sirus
22-01-2005, 16:34
se non ricordo male si trova nella stdlib.h ;)

-Yara-
22-01-2005, 17:02
No, non funziona nemmeno se includo stdlib.h...........
Idee? :(

Fenomeno85
22-01-2005, 17:38
randomize è solo con borland ... cmq è sotto time in borland se non erro.

esempio da borland.


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

int main(void)
{
int i;

randomize();
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}


~§~ Sempre E Solo Lei ~§~

Fenomeno85
22-01-2005, 17:42
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_VAL 100

int main(void)
{
srand(time(NULL));
printf("%d\n", rand() % MAX_VAL);
system ("PAUSE");
return 0;
}


non ho capito che cosa fai dato che ho letto velocemente il codice cmq il codice che ti ho postato gcc te lo dovrebbe compilare al 100%

~§~ Sempre E Solo Lei ~§~

Ubi-Wan
22-01-2005, 22:27
confermo che random e randomize esistono solo sotto borland.

Per randomizzare usa srand(), come suggerito da fenomeno. Di solito si usa come seme il valore ritornato da time(NULL).

Per generare i numeri casuali si usa rand() che ritorna un valore tra 0 e RAND_MAX. Per generare un valore tra 0 e n compresi usa rand() % (n+1) . Per generare un valore tra 1 e n usa ( rand() % n ) + 1

Ziosilvio
22-01-2005, 23:27
Originariamente inviato da Ubi-Wan
Per generare un valore tra 0 e n compresi usa rand() % (n+1) .
Se fai così, rischi di trovarti con un generatore che ha delle proprietà peggiori di quello di partenza.
Ne abbiamo parlato diffusamente alcuni post fa.
Io farei in due tempi (floor è definita in math.h e restituisce un double):
double frand() /* random floating-point value in [0,1) */
{
return (double)rand()/(RAND_MAX+1.0);
}

int irand(int min, int sup) /* random integer value between min and sup-1 */
{
return (int)floor(frand()*(sup-min))+min;
}