Programmino per le carte

tenebrikko
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
edge1
In che senso come fa?

tenebrikko
come fa a festiruire numeri interi se rand() prende numeri a caso che poi verranno divisi per rand_max..ottengo dei numeri irrazionali!

Omega1
E' possibile utilizzare l' operatore modulo (%) in questo modo:

numero=1+rand() % max


Oppure:
numero=(int) 1.0+rand()/RAND_MAX * max

edge1
si ma io vedo scritto INT rnd(...) (ma nessun return forse nn lo hai scritto qui),è ovvio restituisce interi!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.