PDA

Visualizza la versione completa : [C++] Generare numeri random in un array


lucapisa95
12-03-2012, 14:20
Ciao a tutti,
volevo chiedervi una cosa:

Devo generare 10 numeri random,compresi tra 1 e 20,diversi fra loro ed inserirli in un array.
come posso fare?
ho provato a fare cosi:

int array[20]={1,2,3...20}

ma mi da si numeri diversi fra loro,peccato che me li scrive minimo 50 volte..


come posso fare?grazie mille in anticipo! :)

oregon
12-03-2012, 14:25
Che vuol dire "te li scrive 5 volte"?

lucapisa95
12-03-2012, 14:27
nel senso che me la "stampa" a video viene ripetuta 5 volte,ogni volta cambiando i numeri del vettore!


P.S: il vettore deve essere composto da 10 elementi

oregon
12-03-2012, 15:16
In un ciclo, genera un valore random nei limiti richiesti e tenta di aggiungerlo al tuo array. Aggiungilo solo dopo aver controllato con un ciclo rispetto ai valori giÓ presenti, che non esista giÓ.

ramy89
12-03-2012, 15:36
Ma senza codice come facciamo a capire cosa stai sbagliando?

lucapisa95
12-03-2012, 19:41
for(int i=0; i<10; i++){
n = 1 + rand() % 20;
v_r[i]=n; }


Sono riusciuto a generare 10 numeri casuali..ora per˛ non so come fare il controllo per vedere se ci sono numeri uguali!

robe92
12-03-2012, 21:05
io creerei una variabile che "conta i doppioni" e mi farei due cicli for annidati: il primo for(i=0;i<dimvettore-1;i++) e il secondo for(j=1;j<dimvettore;j++) in cui porrei la condizione di uguaglianza v[i]==v[j] che mi fa incrementare la variabile conta-doppioni

lucapisa95
12-03-2012, 21:33
e quando ho finito di scorrere il vettore e di controllare se ci sono doppioni?

oregon
12-03-2012, 23:24
Se c'Ŕ un doppione, non passi al prossimo numero ma generi nuovamente il valore corrente.

ramy89
13-03-2012, 15:11
Lo generi finchŔ non soddisfa le condizioni:



for(int i=0; i<10; i++)
{
while(<ok>)
{
n = 1 + rand() % 20;
}
v_r[i]=n;
}


Ovviamente <ok> non Ŕ una variabile ne una funzione, devi mettercela te la condizione (fai un controllo sugli elementi giÓ generati), e questo non Ŕ C ma pseudo-codice.

Loading