unit Ver; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart, TeeFunci, Math, GanttCh, OleServer; type TForm2 = class(TForm) Chart1: TChart; BitBtn1: TBitBtn; Timer1: TTimer; Button1: TButton; Series1: TPointSeries; Chart2: TChart; Chart3: TChart; Series2: TPointSeries; Series3: TPointSeries; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); Function RasprVeibula(T1,Nu:double):double; Function ExpRaspr(Lyambda:double):double; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} Uses Unit1, Unit3; procedure TForm2.BitBtn1Click(Sender: TObject); begin Timer1.Enabled:=false; Form2.Hide; Form1.Show; end; procedure TForm2.Button1Click(Sender: TObject); var r:double; y:string; tt,i:integer; M1,M2,M3: array[1..500] of integer; begin for i:=1 to 500 do begin r:= RandG(StrToFloat(Form1.Edit6.Text),StrToFloat(Form1.Edit1.Text));//Tn,sigma tt:=Round(r); M1[i]:=tt; r:=ExpRaspr(StrToFloat(Form1.Edit4.Text)); //Lam tt:=Round(r); M2[i]:=tt; r:=RasprVeibula(StrToFloat(Form1.Edit5.Text),StrToFloat(Form1.Edit3.Text));//t1,Nu tt:=Round(r); M3[i]:=tt; end; For i:= 1 to 500 do Form2.Series1.AddXY(M1[i],random(50),'',clBlue); For i:= 1 to 500 do Form2.Series2.AddXY(M2[i],random(50),'',clBlue); For i:= 1 to 500 do Form2.Series3.AddXY(M3[i],random(50),'',clBlue); end; { If Timer1.Enabled then begin Timer1.Enabled:=false; Button1.Caption:='Старт'; end else begin Timer1.Enabled:=true; Button1.Caption:='Стоп'; end; } procedure TForm2.FormCreate(Sender: TObject); begin Timer1.Enabled:=false; randomize; Form2.Button1.Click; end; procedure TForm2.Timer1Timer(Sender: TObject); var r:double; y:string; tt,i:integer; M1,M2,M3: array[1..500] of integer; begin for i:=1 to 500 do begin r:= RandG(StrToFloat(Form1.Edit6.Text),StrToFloat(Form1.Edit1.Text));//Tn,sigma tt:=Round(r); M1[i]:=tt; r:=ExpRaspr(StrToFloat(Form1.Edit4.Text)); //Lam tt:=Round(r); M2[i]:=tt; r:=RasprVeibula(StrToFloat(Form1.Edit5.Text),StrToFloat(Form1.Edit3.Text));//t1,Nu tt:=Round(r); M3[i]:=tt; end; For i:= 1 to 500 do Form2.Series1.AddXY(M1[i],random(50),'',clBlue); For i:= 1 to 500 do Form2.Series2.AddXY(M2[i],random(50),'',clBlue); For i:= 1 to 500 do Form2.Series3.AddXY(M3[i],random(50),'',clBlue); end; Function Tform2.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 Tform2.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 TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.Show; Form2.Hide; end; procedure TForm2.Button2Click(Sender: TObject); begin Form3.Show; end; end.