Thema: Delphi zufällige werte finden

Einzelnen Beitrag anzeigen

fwsp
(Gast)

n/a Beiträge
 
#1

zufällige werte finden

  Alt 28. Jan 2006, 11:51
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;
  Mit Zitat antworten Zitat