Programmino per le carte
questo programma riempie un mazzo di carte con carte tutte diverse tra loro; ho provato a capire come funziona ma l'ultimo for mi incasina le idee..come la interpreto la fase finale? un'altra cosa.. la funzione 'rnd' mi ritorna solo numeri interi.. come fa? grazie!
#define MAXCARTE 40
...
int idx, j, indice;
int numeri[MAXCARTE];
int mazzo[MAXCARTE];
for (idx=0; idx<MAXCARTE; idx++)
numeri[idx] = idx;
for (idx=0; idx<MAXCARTE; idx++)
{
indice = rnd(MAXCARTE-idx);
mazzo[idx] = numeri[indice];
for(j=indice; j<(MAXCARTE-idx-1); j++)
numeri[j] = numeri[j+1];
}
int rnd (int max)
{
int numero;
static int flag;
if (flag == 0)
{
flag++;
srand(time(0)); rand();
}
numero = (double)rand()/RAND_MAX * max;
Risposte
In che senso come fa?
come fa a festiruire numeri interi se rand() prende numeri a caso che poi verranno divisi per rand_max..ottengo dei numeri irrazionali!
E' possibile utilizzare l' operatore modulo (%) in questo modo:
Oppure:
numero=1+rand() % max
Oppure:
numero=(int) 1.0+rand()/RAND_MAX * max
si ma io vedo scritto INT rnd(...) (ma nessun return forse nn lo hai scritto qui),è ovvio restituisce interi!