unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Math, TeeProcs, TeEngine, Chart, StdCtrls, Series; type TForm3 = class(TForm) Chart1: TChart; Chart2: TChart; Chart3: TChart; Button1: TButton; Button2: TButton; Series1: TBarSeries; Series2: TBarSeries; Series3: TBarSeries; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); Function RasprVeibula(T1,Nu:double):double; Function ExpRaspr(Lyambda:double):double; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation uses Ver, Unit1; {$R *.dfm} procedure TForm3.Button2Click(Sender: TObject); begin Form3.Hide; end; procedure TForm3.Button1Click(Sender: TObject); var r,Tm,Km:double; y:string; tt,i:integer; M1,M2,M3: array[1..2000] of integer; begin Form3.Series1.Clear; Form3.Series2.Clear; Form3.Series3.Clear; Form3.Chart1.Refresh; Form3.Chart2.Refresh; Form3.Chart3.Refresh; Tm:=StrToFloat(Form1.Edit7.Text); Km:=(5*Tm)/2000; for i:=1 to 2000 do begin M1[i]:=0; M2[i]:=0; M3[i]:=0; end; for i:=1 to 50000 do begin r:= RandG(StrToFloat(Form1.Edit6.Text),StrToFloat(Form1.Edit1.Text));//Tn,sigma r:=r/Km; tt:=Round(r); if tt<2000 then M1[tt]:=M1[tt]+1; r:=ExpRaspr(StrToFloat(Form1.Edit4.Text)); //Lam r:=r/Km; tt:=Round(r); if tt<2000 then M2[tt]:=M2[tt]+1; r:=RasprVeibula(StrToFloat(Form1.Edit5.Text),StrToFloat(Form1.Edit3.Text));//t1,Nu r:=r/Km; tt:=Round(r); if tt<2000 then M3[tt]:=M3[tt]+1; end; For i:= 1 to 1900 do if M1[i]>0 then Form3.Series1.AddXY(i*Km,M1[i],'',clBlue); For i:= 1 to 1900 do if M2[i]>0 then Form3.Series2.AddXY(i*Km,M2[i],'',clBlue); For i:= 1 to 1900 do if M3[i]>0 then Form3.Series3.AddXY(i*Km,M3[i],'',clBlue); end; Function Tform3.RasprVeibula(T1,Nu:double):double; Begin if (Nu>0) and (T1>0) then result:=Exp((1/Nu)*ln(-T1*ln(Random))) else result:=0; end; Function Tform3.ExpRaspr(Lyambda: Double ):Double; var n: double; begin n:= Random; if (n>0) and (n<1) then Result:=-(1/Lyambda)*ln(n) else Result:=0; end; procedure TForm3.FormCreate(Sender: TObject); begin Form3.Button1.Click; end; end.