Автор: Пользователь скрыл имя, 15 Мая 2013 в 22:40, лабораторная работа
Цель: Знакомство с генераторами случайных чисел, создание алгоритмического (программного) датчика квазислучайных чисел, проверка качества датчика.
Программное обеспечение: операционная система Windows, Pascal.
Постановка задачи: Создать алгоритмический датчик случайных чисел, используя один из приведенных выше алгоритмов либо какой-либо другой. Вывести последовательность квазислучайных чисел. Провести проверку последовательности чисел на равномерность, независимость и стохастичность. Построить функцию плотности распределения случайных чисел в виде гистограммы. Подготовить ответы на контрольные вопросы. Защитить лабораторную работу.
Федеральное агентство образования и науки РФ
Чайковский филиал
государственного образовательного учреждения
высшего профессионального образования
«Пермский государственный технический университет»
Кафедра информационных технологий
Лабораторная работа №2
Дисциплина: Моделирование систем
Тема: «Создание и проверка датчика случайных чисел»
Выполнил:
Проверил:
преподаватель
Лабутина Т.В.
2006г.
Цель: Знакомство с генераторами случайных чисел, создание алгоритмического (программного) датчика квазислучайных чисел, проверка качества датчика.
Программное обеспечение: операционная система Windows, Pascal.
Постановка задачи: Создать алгоритмический датчик случайных чисел, используя один из приведенных выше алгоритмов либо какой-либо другой. Вывести последовательность квазислучайных чисел. Провести проверку последовательности чисел на равномерность, независимость и стохастичность. Построить функцию плотности распределения случайных чисел в виде гистограммы. Подготовить ответы на контрольные вопросы. Защитить лабораторную работу.
Ход работы:
Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ValEdit, Buttons,Math, TeEngine, Series,
ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label8: TLabel;
Edit7: TEdit;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Button1: TButton;
BitBtn1: TBitBtn;
ListBox1: TListBox;
Chart1: TChart;
Series1: TBarSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
L,x1,t,g,x0,x:integer;
sum,disp,z,p,kor,r1,r2,e:real;
m:array[0..199] of real;
pl,f:array[1..10] of integer;
str:string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i,n,nn,mm,k,j,sumpi:integer;
begin
series1.Clear;
Listbox1.Items.Clear;
nn:=0;mm:=0;sum:=0;disp:=0;
x0:=strtoint(edit1.Text);t:=
if strtoint(Edit1.Text)mod 2 =0 then MessageDlg('Число Xo должнобыть нечетным',mtError,[mbOk],0);
L:=8*t-3; g:=8;n:=199;r1:=0.1;r2:=0;e:=
for i:=0 to n do
begin
x:=x0*L;
x1:=lo(x);
m[i]:=x0/Power(2,g);
x0:=x1;Listbox1.Items.Add(
end;
for i:=0 to n do
begin
sum:=sum+m[i];f[i]:=0;
disp:=disp+power((m[i]-0.5),2)
e:=e+power(m[i],2);
z:=Power(m[i],2)+Power(m[i+1],
if z<1 then inc(nn) else inc(mm);
kor:=kor+((m[i]-0.5)*(m[i+1]-
str:=str+copy(floattostr(m[i+
if i<10 then pl[i]:=0;
end;
i:=0; While i < n do
begin k:=0;
if str[i]=str[i+1] then
while str[i]=str[i+1] do
begin inc(k);inc(i);end
else inc(pl[1]);
case k of
1:inc(pl[2]);
2:inc(pl[3]);
3:inc(pl[4]);
4:inc(pl[5]);
end; inc(i);
end;
for i:=0 to 4 do
sumpi:=sumpi+pl[i];
For j:=1 to 10 do
begin
for i:=0 to n do
if (m[i]<r1) and (m[i]>r2) then f[j]:=f[j]+1;
r1:=r1+0.1;r2:=r2+0.1;
series1.Add((f[j]/200),'',
chart1.LeftAxis.Increment:=0.
end;
edit3.Text:=floattostr((1/n)*
edit4.Text:=floattostr((1/n)*
edit5.Text:=floattostr(e/n);
edit6.Text:=floattostr(nn/(nn+
edit7.Text:=floattostr(((1/n)*
edit8.Text:=floattostr(pl[1]/
edit9.Text:=floattostr(pl[2]/
edit10.Text:=floattostr(pl[3]/
edit11.Text:=floattostr(pl[4]/
edit12.Text:=floattostr(pl[5]/
end;
end.
Результаты работы программы:
Выход: в результате выполнения данной лабораторной работы, используя мультипликативный алгоритм, был создан датчик случайных чисел. Была проведена проверка полученной последовательности чисел на равномерность, стохастичность. А также построена функция плотности распределения случайных чисел в виде гистограммы.
Информация о работе Создание и проверка датчика случайных чисел