Generowanie losowych serii liczb

0

Czy tylko ja mam wrażenie, że generator losowych liczb w c# jest co najmniej lekko upośledzony?

Potrzebuję dwie losowe próby wierzchołków (do wygenerowania grafu), w tym celu wykonuję coś takiego:

        Random generujLosowyWierzcholek1 = new Random();
        Random generujLosowyWierzcholek2 = new Random();
        int losowyWierzcholek1;
        int losowyWierzcholek2;
        int i;
        for (i = 0; i < 10; i++)
        {

            losowyWierzcholek1 = generujLosowyWierzcholek1.Next(0, 10 - 1);
            losowyWierzcholek2 = generujLosowyWierzcholek2.Next(0, 10 - 1);
            Console.WriteLine(losowyWierzcholek1 + " " + losowyWierzcholek2);
            
        }

Zwrócone zostają jednak takie same wartości, tzn. zawsze losowyWierzcholek1 ma tę samą wartość co losowyWierzcholek2. Jak to ominąć i otrzymać dwie istotnie różne wartości?

0

Bo randomy mają taki specjalny "feature" który powoduje to, że gdy tworzymy dwa obiekty generatora w bardzo krótkim odcinku czasu to ich liczby mogą się ze sobą pokrywać. Rozwiązaniem jest chyba po prostu stworzenie jednego ogólnego randoma i pobieranie liczb z niego.

EDIT: Dokładny opis problemu poniżej:

"The default seed value is derived from the system clock and has finite resolution. As a result, different Random objects that are created in close succession by a call to the default constructor will have identical default seed values and, therefore, will produce identical sets of random numbers. This problem can be avoided by using a single Random object to generate all random numbers. You can also work around it by modifying the seed value returned by the system clock and then explicitly providing this new seed value to the Random(Int32) constructor. For more information, see the Random(Int32) constructor."

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