c# - tablica liczb bez powtórzeń

0

Witam. Potrzebuję wylosować liczby od 1 do n bez powtórzeń i przypisać je do tablicy[n] - czyli chcę po prostu uzyskać tablicę zawierającą liczby bez powtórzeń od 1 do podanej w parametrze funkcji.

Macie jakieś pomysły jak to zrobić?

0

Przed zapisaniem liczby do właściwej tablicy sprawdź wyszukiwaniem binarnym, czy ta liczba znajduje się w tablicy, jeśli nie - dorzuć ją. Złożoność wyniesie O(log n), więc bardzo mało.

3

Najprościej będzie tak (dla stosunkowo małych liczb):

private static Random _random = new Random();

public static IEnumerable<int> RandomSequence(int bound)
{
    return Enumerable.Range(1, bound).OrderBy(x => _random.Next());
}

Wykorzystanie:

foreach(int number in RandomSequence(10))
    Console.Write("{0} ", number);
0

Moja tablica będzie mieć wielkość mniej więcej od 100 do 350 elementów(tablica od 1 do tylu liczb). Czy wtedy mogę zastosować te sposoby?

0

Tak.

0

Rev, napisałeś że wykorzystanie tego to:

 foreach(int number in RandomSequence(10))
    Console.Write("{0} ", number);

ale piszę program okienkowy, i chciałbym uzyskać tablicę z tymi liczbami. Czy mogę to zrobić tak:

int i=0;
foreach(int number in RandomSequence(10))
{
    moja_tablica[i] = number;
    i++;
}
 

??

1
int[] tablica = RandomSequence(10).ToArray();
0

dzięki wielkie Rev ;) ten sposób działa i co więcej krótszego chyba nie da się wymyślić ;) Pozdro

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