losowanie bezwzrotne

Odpowiedz Nowy wątek
noen
2007-06-22 15:01
noen
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.

Pozostało 580 znaków

2007-06-22 19:39

Rejestracja: 14 lat temu

Ostatnio: 3 lata temu

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,

Pozostało 580 znaków

2007-06-22 20:55

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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.


You need to learn how to walk
before you can run

Pozostało 580 znaków

Odpowiedz

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