generowanie liczb pseudolosowych

0

Cześć,
mam mały problem z zadaniem domowym na infe, program ma losować liczby całkowite dopóki nie zostanie wylosowana wartość 100. Program losuje liczbę i rzeczywiście przerywa prace gdy padnie wartość 100, ale kompilator tak jakby wyświetla po kilka razy wylosowaną wartość, co jest raczej mało prawdopodobne , żeby z przedziału (1,100) losował po 15 razy tą samą liczbę z rzędu. Prosiłbym o jakieś wskazówki :)

       int b=0;

            for ( ;b != 100; )
            {
                b = new Random().Next(1,101);
                Console.WriteLine("{0}",b);

            }


 
0

To, co wylosuje Random zależy od tego, o jakiej godzinie go utworzysz. Ponieważ Ty tworzysz wiele takich obiektów w ciągu jednej milisekundy (bo tyle trwa krok pętli), to otrzymujesz wiele takich samych wartości.
Rozwiązanie - nie twórz obiektu Random w każdym kroku pętli, tylko zrób z niego pole statyczne klasy.

0

Poradziłem sobie z tym dodając opóźnienie do pętli.

 System.Threading.Thread.Sleep(10);   

@somekind nie bardzo wiem, jak to stworzyć mógłbyś przedstawić jaśniejsze rozwiązanie ? Byłbym wdzięczny. :)

0

Czego w tym, co napisał somekind, nie rozumiesz i nie potrafisz odnaleźć w Internecie?
Czym jest pole statyczne czy też dlaczego źle działa?
Twoje rozwiązanie ze sleepem można przyrównać do klejenia auta klejem do papieru.

0

@Patryk27

Poradziłem sobie w ten sposób :

            int b=0;
            Random a = new Random();

            for (; b != 100; )
            {
                b = (a.Next(1, 101));
                Console.WriteLine("{0}", b);

            }

 

Jest to dobra metoda?

0

Tak, tak może być.

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