losowanie bezwzrotne

0

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.

0

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,

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1