come faccio in c++ a generarmi un vettore che contiene tutti i numeri da 1 a n, in modo casuale?!? grazie a tutti!!! ciao!
come faccio in c++ a generarmi un vettore che contiene tutti i numeri da 1 a n, in modo casuale?!? grazie a tutti!!! ciao!
http://www.neonargon.com/
----:::[ GoTeNsSj4 ]:::----
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.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza