Na szybko zmienne o nazwach m, i, j... nic nie mówią. Nie używaj takich zmiennych. W twoim przypadku w liniach 48-50 tworzysz zmienne... których nie używasz. Nie używasz ich dlatego, że w pętli masz inne zmienne, którym tam na nowo przypisujesz wartości początkowe. Dla mnie linie 48-50 możesz usunąć i wtedy nie musisz myśleć nad nazwami dla i, j, m.
Kolejna sprawa czy
for(int j=0;j<=random-1;j++)
nie jest tym samym co ?
for(int j=0;j<random;j++)
Druga opcja jest czytelniejsza :)
Trzecia - według mnie rzecz do poprawy z największym priorytetem - linia 82 do konca. For, if, while, if... to nie jest czytelne i powinieneś to podzielić na funkcje z mniszymi funkcjonalnościami.