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!