Losowanie 6 liczb z 49 bez powtórzeń

0

Zna ktoś prosty sposób żeby sprawdzić w tym przypadku w funkcji "if" czy wylosowane wcześniej liczba była wylosowana wcześniej?

 
            int[] tab = new int[6];
            Random gen=new Random();

            Console.WriteLine("Wynik LOTTO: ");
            int i= 0;
            while (i < 6)
            {
                int wylosowana_liczba = gen.Next(1, 49); 
                if (wylosowana_liczba != "liczby wylosowane wcześniej w tablicy" ) 
                {
                    tab[i] = wylosowana_liczba;
                    i++;
                }
            }
            for (i = 0; i < 6; i++)
                Console.Write(tab[i]+ " ");         
            Console.ReadLine();
1

Może użyj listy a do sprawdzania metody Contains.
http://msdn.microsoft.com/en-us/library/bhkz42b3%28v=vs.110%29.aspx

0

Rozwiązanie

 
            int[] tab = new int[6];
            Random gen=new Random();

            Console.WriteLine("Wynik LOTTO: ");
            int i= 0;
            while (i < 6)
            {
                int numerek = gen.Next(1, 49);
                if (tab.Contains(numerek) == false) 
                {
                    tab[i] = numerek;
                    i++;
                }
            }
            for (i = 0; i < 6; i++)
                Console.Write(tab[i]+ " ");         
            Console.ReadLine();
0

@greg07, to bardzo złe rozwiązanie, już lepiej:

            for(int i=0;i<6;++i)
            {
                int val=gen.Next(1, 49-i);
                for(int k=0;k<i;++k) if(tab[k]>=val) ++val;
                tab[i]=val;
            }

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