PDA

View Full Version : [c] Funzioni e Rand


supermario
27-02-2007, 20:42
Ciao

come mai non riesco a generare dei veri numeri casuali grazie a questo codice??



#include <stdio.h>
#include <stdlib.h>
#define DIM 6

int mario[DIM];
int vetmario[90];
void genera(int*);
void scrivi();
void ordina(int*, int);
int main()
{

int t;
for (t=0; t<=20;t++)
{
genera(mario);
ordina(mario, DIM);
scrivi();
printf("\n");
}

return 0;
}
void genera (int* Array)
{
int p, k;
int seed;
for(p=0;p<= DIM;p++)
{
for (k=0;k<=seed;k++)
{
srand(time(NULL));
vetmario[k]= rand()%seed;
}

mario[p] = vetmario[k-1];
}
}
void scrivi()
{
int k;
for (k=0;k<=DIM;k++)
{
printf("%d ", mario[k]);
}
}
void ordina(int* Array, int elemN)
{
int i, tmp, ultimo;
int alto = (elemN - 1);
while (alto >= 0)
{
ultimo = -1;
for (i=0; i<alto; i++)
if (mario[i]>mario[i+1])
{
tmp = mario[i];
mario[i] = mario[i+1];
mario[i+1] = tmp;
ultimo = i;
}
alto = ultimo;
}

}




il problema dovrebbe stare nella funzione genera...qualcuno mi sa dare una mano?


ps, il programma è efficiente o potrebbe essere migliorato?

Grazie per l'aiuto

andbin
27-02-2007, 20:45
srand() va chiamato solamente 1 volta all'inizio del programma.

supermario
27-02-2007, 20:50
ho spostato srand nel main e modificato la void genera in questo modo


void genera (int* Array)
{
int p, k;
int seed = 90;
srand(seed);
for(p=0;p<= DIM;p++)
{
for (k=0;k<=seed;k++)
{

vetmario[k]= rand()%90;
}

mario[p] = vetmario[k-1];
}
}



ma mi genera 20 righe uguali...:(


edit: ora funzia, mi sono dimenticato di cancellare l'srand dalla funzione :D