Ich verstehe den Code nicht. Wenn ich Zufallszahlen erstelle und den Mittelwert nehme, dann muss ich ja wohl ALLE Zahlen addieren. Ein *IF* ist hier also garantiert fehl am Platze.
Delphi-Quellcode:
Summe := 0;
Anzahl := 0;
FOR i:=0 TO image1.width-1 DO
begin
r:=random(bereich);
summe := summe + r;
// Anzahl ist ja gleich image1.width, muss man also eigentlich nicht addieren.
// Aber so ist es verständlich: Pro Probe (Zufallszahl) wird die Anzahl erhöht.
Anzahl := Anzahl + 1;
..
end;
If Anzahl>0 then
Mittelwert := summe/Anzahl
else
Mittelwert := 0;
Die Standardabweichung berechnest Du dann separat. Du hast ja die Zähler (wie häufig jede Zahl gewürfelt wurde).
Delphi-Quellcode:
summe := 0;
For i:=0 to bereich-1 do
// i ist also eine Zufallszahl und zaehler[i] sagt, wie oft sie aufgetreten ist.
summe := summe + sqr(zaehler[i]*(i-mittelwert));
standardabweichung := sqrt(summe/(Anzahl-1));
Achtung! Die Formel ist etwas anders als deine. Laut Wiki stimmt das aber.