PDA

Visualizza la versione completa : [C++] generazione numeri random tutti diversi


GoTeNsSj4
13-12-2003, 15:07
come faccio in c++ a generarmi un vettore che contiene tutti i numeri da 1 a n, in modo casuale?!? grazie a tutti!!! ciao!

LeleFT
13-12-2003, 16:58
Prova ad utilizzare questo semplice algoritmo (descritto a parole):

1) Crei due array di n elementi e popoli il primo con tutti i valori da 1 ad n (al primo posto metti 1, al secondo metti 2 e così via...)

2) Setti una variabile a (n-1) (la chiamo x) e una a 0 (la chiamo y)

3) Controlli se x vale 0. Se è maggiore di 0 fai estrarre un valore a caso al programma fra 0 e x (la chiamo z), altrimenti vai al punto 6

3) Prendi il valore che stà in posizione z nel vettore1 e lo metti in posizione y nel vettore 2

4) Togli dal primo vettore l'elemento appena estratto (shiftando eventualmente tutti i successivi di una posizione). Decrementi x di uno e aumenti y di uno

5) Torni al punto 3

6) Prendi il primo elemento nel vettore1 e lo metti in posizione (n-1) nel vettore2

Hai finito: il vettore2 contiene n elementi in ordine casuale compresi tutti fra 1 e n.


PS: Ho tenuto conto del fatto che gli indici dell'array di n elementi vanno da 0 a (n-1).


Ciao.

Loading