Błędne działanie metody losującej bez powtórzeń

0

Napisałem metodę do obliczania liczb bez powtórzeń. Niestety nie działa ona poprawnie, liczby się powtarzają. Czy ktoś może mi powiedzieć gdzie jest błąd? Dodam, że jest to mój 2 dzień z c#.

public void LosujLiczbe()
        {
            List<int> tab = new List<int> { 1, 2, 3, 4, 5, 6 };
            List<int> wynik = new List<int> { };
            for (int i = 0; i < 4; i++)
            {
                Random random = new Random();
                int randomNumber = random.Next(tab.Count);
                wynik.Add(randomNumber);
                tab.Remove(i);
            }
         } 

Znalazłem na necie kod który powinien działać, ale też nie potrafię go "poprawnie" użyć, również wyświetla mi powtarające się liczby.

public void Losowanie(int n, int k) 
        {
            //n = zakres losowanych liczb
            //k = ilosc losowanych liczb
            Random rand = new Random();
            // wypełnianie tablicy liczbami 1,2...n
            int[] numbers = new int[n];
            for (int i = 0; i < n; i++)
                numbers[i] = i + 1;
            // losowanie k liczb

            for (int i = 0; i < k; i++)
            {
                // tworzenie losowego indeksu pomiędzy 0 i n - 1
                int r = rand.Next(n);

                // wybieramy element z losowego miejsca
                wynik.Add(r);

                // przeniesienia ostatniego elementu do miejsca z którego wzięliśmy
                numbers[r] = numbers[n - 1];
                n--;
            }
        } 
1

Twórz obiekt Random nie w pętli, ale przed pętlą... TYLKO RAZ.

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