В качестве исходных данных для программы взять стандартно нормально распределенную выборку - C (СИ)
Формулировка задачи:
Мне нужно в качестве исходных данных для программы взять стандартно нормально распределенную выборку, около 500 значений. Как это сделать? Как их выбрать?
Решение задачи: «В качестве исходных данных для программы взять стандартно нормально распределенную выборку»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define N 20
#define PI 3.1415926535897932
#define P (1 / sqrt(2 * PI))
int main(int argc, char* argv[])
{
double X[N] = { 0 };
for (int t = 0; t < N; t++)
{
bool found = false;
double rv = (double)rand() / RAND_MAX;
for (int j = t - 1; j >= 0 && !found; j--)
found = (X[j] == rv) ? 1 : 0;
if (found == false) X[t] = rv;
}
for (int i1 = 0; i1 < N; i1++)
printf("X[%d] = %lf\n", i1, X[i1]);
printf("\n");
for (int i2 = 0; i2 < N; i2++)
{
X[i2] = P * exp(-pow(X[i2], 2) / 2);
printf("X[%d] = %lf\n", i2, X[i2]);
}
_getch();
return 0;
}
Объяснение кода листинга программы
Код представляет собой программу на языке C, которая выполняет следующие действия:
- Синтез нормального распределения:
В первой части программы используется алгоритм обратного трассирования для генерации 20 случайных чисел, которые следуют нормальному распределению. Переменная
foundиспользуется для проверки, было ли уже сгенерированное числоrvдобавлено в массивX. Еслиfoundостается равнымfalse, это означает, чтоrvне было добавлено, и поэтому оно добавляется в массивX. - Вывод массива X:
Во второй части программы каждое значение в массиве
Xвыводится на консоль. - Вычисление значений P(X):
В третьей части программы для каждого значения в массиве
Xвычисляется значениеP(X), которое представляет собой вероятность того, что случайное число следует нормальному распределению. ЗначениеP(X)выводится на консоль. - Обработка ввода пользователя: В конце программы программа ожидает нажатия клавиши от пользователя, прежде чем завершиться.