/
onequ1z
/
JavaCoursePaperTulSU
Обзор
Документация
Войти
/
onequ1z
/
JavaCoursePaperTulSU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru/dmitry/montecarlo/model/ExperimentResult.java
134 строки
6 KB
tayno
Рефакторинг: добавление секундомера, профилировщика и очистка кода
05 дек 2025, 09:37
05 дек 2025, 09:37
52c8b9a
Код
Авторство
О чём код?
package ru.dmitry.montecarlo.model; /** * Результаты серии экспериментов Монте-Карло для различных значений N. * Содержит статистику (средние значения и стандартные отклонения) для каждого значения N. * Класс является неизменяемым (immutable). */ public class ExperimentResult { /** * Статистика результатов для одного конкретного значения N. * Содержит результаты всех повторов и агрегированную статистику. * Класс является неизменяемым (immutable). */ public static class NStats { private final long samples; private final MonteCarloResult[] runs; private final double avgEstimatedArea; private final double avgRelativeErrorPercent; private final double avgDurationMillis; private final double stdDevEstimatedArea; private final double stdDevRelativeErrorPercent; /** * Создаёт статистику для одного значения N. * * @param samples количество испытаний (N) * @param runs массив результатов всех повторов * @param avgEstimatedArea среднее значение оценённой площади * @param avgRelativeErrorPercent среднее значение относительной ошибки в процентах * @param avgDurationMillis среднее время выполнения в миллисекундах * @param stdDevEstimatedArea стандартное отклонение оценённой площади * @param stdDevRelativeErrorPercent стандартное отклонение относительной ошибки */ public NStats(long samples, MonteCarloResult[] runs, double avgEstimatedArea, double avgRelativeErrorPercent, double avgDurationMillis, double stdDevEstimatedArea, double stdDevRelativeErrorPercent) { this.samples = samples; this.runs = runs; this.avgEstimatedArea = avgEstimatedArea; this.avgRelativeErrorPercent = avgRelativeErrorPercent; this.avgDurationMillis = avgDurationMillis; this.stdDevEstimatedArea = stdDevEstimatedArea; this.stdDevRelativeErrorPercent = stdDevRelativeErrorPercent; } /** * Возвращает количество испытаний (N). * * @return количество испытаний */ public long getSamples() { return samples; } /** * Возвращает массив результатов всех повторов для этого значения N. * * @return массив результатов повторов */ public MonteCarloResult[] getRuns() { return runs; } /** * Возвращает среднее значение оценённой площади по всем повторам. * * @return среднее значение площади */ public double getAvgEstimatedArea() { return avgEstimatedArea; } /** * Возвращает среднее значение относительной ошибки в процентах. * * @return среднее значение относительной ошибки */ public double getAvgRelativeErrorPercent() { return avgRelativeErrorPercent; } /** * Возвращает среднее время выполнения в миллисекундах. * * @return среднее время выполнения */ public double getAvgDurationMillis() { return avgDurationMillis; } /** * Возвращает стандартное отклонение оценённой площади. * * @return стандартное отклонение площади */ public double getStdDevEstimatedArea() { return stdDevEstimatedArea; } /** * Возвращает стандартное отклонение относительной ошибки. * * @return стандартное отклонение ошибки */ public double getStdDevRelativeErrorPercent() { return stdDevRelativeErrorPercent; } } private final NStats[] statsPerN; /** * Создаёт результат серии экспериментов. * * @param statsPerN массив статистики для каждого значения N */ public ExperimentResult(NStats[] statsPerN) { this.statsPerN = statsPerN; } /** * Возвращает массив статистики для всех значений N. * * @return массив статистики по каждому N */ public NStats[] getStatsPerN() { return statsPerN; } }