Net schlecht
Was würde ich anders machen:
Real gegen Double oder bei noch größerer Genauigkeit gegen Extended ersetzen. Ersteres ist Formsache, zweites würde ich machen, weil Du bei 10.000.000 Durchläufen schon ein paar Rundungsfehler aufsummieren könntest.
10.000.000 Durchläufe? Ganz schon viel, oder? Ich würde evtl. die Durchläufe aus dem Begin/Ende bestimmen. Wenn Du jetzt nur einen extrem kleinen Bereich hast und den in 10.000.000 Teile unterteilst, rechnest Du sonst mit praktisch Null.
Du berechnest immer wieder:
(og-ug)/Anzahl_intervalle
Das solltest Du nur einmal machen.