hallo,
könnte man diesen code effizienter machen, gerade was es angeht die verteilung der werte gleichmäßiger zumachen?
UGlobal.IVArt wird aus einer .ini geladen und kann folgende zustände haben, 1,2,3. Es wird jeweils nur der erste Ton (Ton1) gesucht und Ton2 wird dann mit hilfe der gewichtung (Intervall) gebildet.
Delphi-Quellcode:
procedure TFIntervalle.TonSuchen(var Ton1, Ton2: integer);
var Zufall: integer;
Intervall: integer;
begin
Zufall:= random(100) + 1;
case Zufall of
1.. 3: Intervall:= 0;
4.. 14: Intervall:= 1;
15.. 23: Intervall:= 2;
24.. 32: Intervall:= 3;
33.. 43: Intervall:= 4;
44.. 52: Intervall:= 5;
53.. 60: Intervall:= 6;
61.. 69: Intervall:= 7;
70.. 78: Intervall:= 8;
79.. 84: Intervall:= 9;
85.. 90: Intervall:= 10;
91.. 96: Intervall:= 11;
97..100: Intervall:= 12;
else Intervall:= 0;
end;
case UGlobal.IVArt of
1: repeat
begin
Zufall:= random(900000) + 1;
Ton1:= Zufall mod 30;
Ton2:= Ton1 + Intervall;
end;
until (abs(Ton1-Ton2)<13) and (Ton1<=Ton2);
2: repeat
begin
Zufall := random(900000) + 1;
Ton1:= Zufall mod 30;
Ton2:= Ton1 - Intervall;
end;
until (abs(Ton1-Ton2)<13) and (Ton1>=Ton2);
3: repeat
begin
Zufall := random(900000) + 1;
Ton1 := Zufall mod 30;
Zufall:= random(1) + 1;
case Zufall of
1: Ton2:= Ton1 + Intervall;
2: Ton2:= Ton1 - Intervall;
end;
end;
until (abs(Ton1-Ton2)<13);
end;
Ton1:= Ton1 + 54;
Ton2:= Ton2 + 54;
end;