Министерство образования РФ Новосибирский государственный технический университет Кафедра прикладной математики Лабораторная работа №1 МОДЕЛИРОВАНИЕ И СТАТИСТИЧЕСКИЙ АНАЛИЗ РАВНОМЕРНО РАСПРЕДЕЛЕННЫХ И ДИСКРЕТНЫХ ПСЕВДОСЛУЧАЙНЫХ ВЕЛИЧИН Факультет: ПМИ Группа: ПМ-01 Студенты: Кирюшина Е.С. Русакова Ю.М. Хижняк О.А. Преподаватели: Чимитова Е.В. Цой Е.Б. Новосибирск 2003 |
Цель работы
Изучение программных методов имитации равномерно распределенных псевдослучайных величин на отрезке [0,1]; методов моделирования дискретных псевдослучайных величин.
Задание
1. Разработать программу, реализующую схему моделирования равномерно распределенных псевдослучайных чисел на отрезке [0,1].
2. Найти
рекуррентное соотношение для вычисления вероятностей .
Разработать и реализовать алгоритм моделирования соответствующей
псевдослучайной дискретной величины.
1. Тип программного генератора моделирования псевдослучайных величин:
в) генератор Дэвиса ,
,
,
.
2. Тип дискретного распределения:
в) геометрическое ,
;
,
,
.
Текст программы:
#include <stdio.h>
#include <math.h>
int i,n,m=4;
double a0=3.14159265,a1=0.542101887;
void main()
{
double x0=0.14159265,x1=0.542101887,x;
FILE *res=fopen("res.txt","wt");
printf("Print n\n");
scanf("%d",&n);
for (i=0; i<n; i++)
{
x=fmod(a0*x1+fmod(a1*x0,4)*0.25,1);
x0=x1;
x1=x;
fprintf(res,"%f\n",x);
printf("x%d=%f\n",i,x);
}
}
0.722253
0.342492
0.173855
0.592599
0.885267
0.861460
0.826334
0.712754
0.351171
0.199834
0.675389
0.148881
0.559255
0.777127
0.517210
0.730185
0.364038
0.242616
0.811539
0.582404
Достигнут уровень значимости:
α=0.42
Текст программы:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
double pp,p,a0=3.14159265,a1=0.542101887;
double x0=0.14159265,x1=0.542101887,M;
int generate()
{
//cout<< "M="<< M << endl;
int m=-1;
do
{
m++;
M=M-p;
p=p*(1.0-pp);
} while(M>=0);
return m;
}
int main()
{
int i,n;
double* ch;
cout << "n: "; cin >> n;
cout << "pp: "; cin >> pp;
ch=new double[n+1];
for(i=0; i<n; i++)
{
p=pp;
M=fmod(a0*x1+fmod(a1*x0,4)*0.25,1);
x0=x1;
x1=M;
ch[i]=generate();
cout << ch[i] << endl;
}
getch();
return 0;
}
1)
n=20
p0=0.2
5 1 0 4 9 8 7 5 1 0 5 0 3 6 3 5 2 1 7 3
Достигнут уровень значимости:
α=0.33
2)
n=100
p0=0.1
Достигнут уровень значимости:
α=0.475
3) n=100
p0=0.7
Достигнут уровень значимости:
α=0.78
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.