Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Zufallszahl prozentual manipulieren

  Alt 21. Feb 2008, 14:36
Vielleicht so:
Delphi-Quellcode:
type
TZEntry = record
  z:double; // Prozentanteil
  value:string; // Wert
end;

const
  // Achtung: die Summe der Prozentwerte muss 100% ergeben
  // die Prozentwerte sollen in absteigender Reihenfolge sortiert sein
  ZList :array[0..3] of TZEntry = (
   (z:45.0; value:'VW'),
   (z:40.0; value:'Opel'),
   (z:10.0; value:'BMW'),
   (z:5.0; value:'Porsche')
);

function GetZufalldata(list : array of TZEntry):string;
var
  i : Integer;
  z, b : Double;
begin
  z := random * 100.0;

  b := 0.0;
  for i := low(list) to high(list) do
  begin
    b := b + list[i].z;
    if z < b then
    begin
       Result := list[i].value;
       Exit;
    end;
  end;
   Result := 'invalid';
end;
Aufruf:
  daten := GetZufallData(ZList);
Andreas
  Mit Zitat antworten Zitat