Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Lineares RandomRange für Real

  Alt 13. Mär 2007, 10:27
So funktioniert es natürlich. Vielleicht nochmal als Info, wie die Mathematik dahinter ist:
Als Beispiel für Delphi:
Delphi-Quellcode:
type TLinVerteilung=class
       constructor create(min,max:double);
       function getvalue:double;
      private
       a,b,c:double;
end;

unction TLinVerteilung.getvalue:double;
var y:double;
begin
  y:=random; //y-wert
  //quadratische funktion umkehren um aus dem y-Wert den x-Wert zu bestimmen
  //(nur positive "Lösung")
  //x=-b/(2a) + sqrt( b^2/(4a^2) - (c-y)/a )
  result:=-b/(a*2)+sqrt(sqr(b/a)/4-(c-y)/a); //x-->result
end;
constructor TLinVerteilung.create(min,max:double);
begin
  inherited create;
  //Parameter der quadratischen Funktion für eine lineare Verteilung berechnen
  //y=a*x^2 + b*x + c
  //P1=(min,0)
  //P2=(max,1)
  //P1 ist gleichzeitig Scheitelpunkt der quadratischen Funktion
  a:=1/sqr(max-min);
  b:=-2*min*a;
  c:=sqr(min)*a;
end;
Und wenn du jetzt die Variablen a,b,c oben bei getvalue einsetzt, kommst du genau auf deine Gleichung.
(Hey, das ist eine mathematische Herleitung mit Delphi )

Ansonsten ist es schwer zu erklären. du musst dich in Verteilungsfunktionen einarbeiten.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat