witam.
Czy istnieje jakiś prosty, mało czasochłonny z punktu widzenia czasu wykonywania sposób na losowanie ze zbioru liczb bez powtórzeń? Zbiór liczb jest raczej duży.
Może jest gotowa funkcja w c# do tego?
Z góry dziekuje za pomoc.
witam.
Czy istnieje jakiś prosty, mało czasochłonny z punktu widzenia czasu wykonywania sposób na losowanie ze zbioru liczb bez powtórzeń? Zbiór liczb jest raczej duży.
Może jest gotowa funkcja w c# do tego?
Z góry dziekuje za pomoc.
Nie ma możesz sam napisać (do wyboru)
wypełniasz tablicę wartosci do losowania i po wylosowaniu przesuwasz wszystkie wartości w tablicy tak aby zakryły wylosowaną liczbę- zmniejszasz roxzmiar tablicy (statystycznie poprawne )
np
1,2,3,4,5,6,7,8,9,10
losujesz index np 5 (czyli cyfre 5)
i przesuwasz wartosci otrzymując
1,2,3,4,6,7,8,9
lub
wypełniasz wartosciami , losujesz index i kopiujesz ostatni element
czyli
1,2,3,4,5,6,7,8,9,10
losujesz index np 5 (czyli cyfre 5)
i przesuwasz wartosci otrzymując
1,2,3,4,9,6,7,8,
Szybsza jest zamiana z 'ostatnim' elementem i zmniejszanie indeksu, czyli
1,2,3,4,5,6,7,8
maxIndeks = 7
losujesz 5 i tablica:
1,2,3,4,8,6,7,5
maxIndeks = 6
nastepne losowanie z zakresu tablicy 0-6.