Cześć, widzę że znowu się spotykamy :)
Po pierwsze zerknij tu:
https://social.msdn.microsoft.com/Forums/windows/en-US/1d5ea36d-1c44-4d2c-bde7-aa6d0cb5c839/how-to-populate-a-datagridview?forum=winformsdatacontrols
Jeśli chodzi o drugie pytanie to pewnie tak, ale nie mam czasu Ci tego szuakć,
poszukaj sam np na StcakOverflow, na pewno coś znajdziesz a jeśli nie to prawdopodobnie będzie jakiś workaround ;)
Tu masz jeszcze kilka uwag odnośnie kodu:
22: w .NET framework przyjęło się, że nazwy zmiennych piszemy z małej litery, łatwiej jest je wtedy odróżnić od typów.
Po drugie obiektem klasy Random nie jest ziarno, ziarno to to, czego używa generator liczb losowych podczas losowania. Ja lubie nazywać sobie zmienne typu Random np. kostka <-- służy do losowania :)
23: Ciekawi mnie czy jeśli stosujesz modyfikator dostępu 'private' a w komentarzu piszesz, że to zmienna 'globalna' to nie czujesz jakiejś logicznej sprzeczności w tym miejscu?
63: chyba wystarczy samo else :)
67: hmm... czy jeżeli za każdym razem czyścisz te kolekcję 'Statistics', to czy w linii 75 ta kolekcja nie ma przypadkiem zawsze w sobie tylko 1 elementu?
75: ja bym nazwał iterator statistic bez 's' na końcu
79: tę linię można pominąć - DataSource to typ referencyjny, dane będą aktualne.
Jeśli chodzi o sam kod to zakładam, że działa jak powinien? Nie sprawdzałem pod względem logicznym.
P.S. często stosuję się konwencję, że nazwy zmiennych prywatnych poprzedza się podkreślnikiem np. private Random _rnd;
Pozdrawiam.