View Full Version : [c#]estrarre numeri casuali da un array
Ciao volevo chiedervi se esiste già una funzione implementata, che permetta di estrarre da un array contenente numeri, tale numeri in modo casuale
Ciao.
No, mi dispiace, non c'e'.
Devi scrivere un algoritmo per farlo.
astorcas
27-07-2010, 22:51
Hai mai sentito parlare dell'algoritmo di Fisher-Yates?
E' davvero banale da implementare:
private static void Shuffle<T>(T[] arr)
{
Random rand = new Random();
for (int i = arr.Length - 1; i >= 0; i--)
{
int r = rand.Next(0, i + 1);
T temp = arr[i];
arr[i] = arr[r];
arr[r] = temp;
}
}
Se invece di accedere all'array in modo casuale puoi spostare gli elementi nell'array allora una volta applicato lo shuffle basta che ci accedi in modo sequenziale, altrimenti potresti sfruttare questo algoritmo creandoti un array di indici (tanti quanto la lunghezza del tuo array) che "mescolerai" e userai per accedere al tuo array.
Il tutto in tempo lineare.
thebestnadir
11-11-2010, 18:15
ciao volevo sapere se potresti riscrivermi il programma (ke hai appena scritto) in c. Ho qualke difficoltà con java quindi nn ho capito tanto bn il tuo programma.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.