List <PointValue> point_values;                                         //Точечные оценки



        #region CONSTRUCTORS

        /// <summary>
        /// Создает новый объект NormalDistribution на основе объекта
        /// Distribution, содержащего статистические данные, для которых
        /// проверяется гипотеза
        /// </summary>
        /// <param name="distr"></param>
        public NormalDistribution(Distribution.Distribution distr) : base(distr)
        {
            //Если наш исходный ряд был обычным рядом (либо ввод ряда, либо ввод выборки),
            //то берем ряд частот. Иначе берем группированный ряд частот как его аналог для
            //интервального ряда
            if (distr.StatFreq != null)
            {
                raw_statistics = distr.StatFreq;
            }
            else
            {
                raw_statistics = distr.GroupFreq;
            }


            //Расчитываем точеченые оценки

            //Мат ожидание = выборочное средние
            //Дисперсия = выборочная дисперсия
            NumericSolver solver = new NumericSolver(raw_statistics);

            standart_deviation = solver.StandartDeviation();
            expected_value     = solver.Mean();

            //Создаем список с точечными оценками
            point_values = new List <PointValue>
            {
                new PointValue("Математическое ожидание", Resources.normal_expected_value, expected_value),
                new PointValue("Среднеквадратическое откланение", Resources.normal_standart_deviation, standart_deviation),
            };
        }
示例#2
0
        private DistributionPackage DownloadPackageAsync(Distribution.Distribution distribution)
        {
            var distroPath        = GetFileName(distribution);
            var distroDownloadUrl = GenerateUrl(distribution);

            var client = new HttpClient {
                BaseAddress = config.DownloadUri
            };

            client.DefaultRequestHeaders.Add("User-Agent", config.UserAgent);
            var response = client.GetAsync(distroDownloadUrl, HttpCompletionOption.ResponseContentRead)
                           .ConfigureAwait(false).GetAwaiter().GetResult();

            if (!response.IsSuccessStatusCode)
            {
                throw new ArgumentException("The specified distribution cannot be downloaded");
            }

            using (var stream = response.Content.ReadAsStreamAsync().ConfigureAwait(false).GetAwaiter().GetResult())
            {
                stream.CopyToAsync(File.Create(distroPath))
                .ConfigureAwait(false)
                .GetAwaiter()
                .GetResult();
            }
            return(new DistributionPackage(distroPath));
        }
示例#3
0
 public DefaultPgConfig(Distribution.Distribution distribution, string dataDir)
 {
     Distribution = distribution;
     if (!string.IsNullOrWhiteSpace(dataDir))
     {
         DataDir = dataDir;
     }
 }
示例#4
0
        private string GetFileName(Distribution.Distribution distribution)
        {
            var fileExt = distribution.Platform == OSPlatform.Linux ? "tar.gz" : "zip";

            return(Path.Combine(
                       config.PackagesCachePath.FullName,
                       $"{distribution.Version.SemVersion}-{distribution.BitSize.ToString()}.{fileExt}".ToLowerInvariant()));
        }
        public DistributionPackage Setup(Distribution.Distribution distribution, DirectoryInfo distroPath)
        {
            var package = downloader.GetPackage(distribution);

            package.CopyTo(distroPath);

            distroPath.Refresh();
            return(package);
        }
示例#6
0
        public void Should_check_for_distribution()
        {
            var localUserStore = new LocalUserStore(new DefaultStoreConfig());
            var distribution   = new Distribution.Distribution(new Version("9.4.15"), OSPlatform.Windows, Architecture.X86);

            var result = localUserStore.GetDistributionPackage(distribution);

            result.Should().NotBeNull();
        }
        public void Should_download_postgres_package()
        {
            var config     = new DefaultStoreConfig();
            var cacheDir   = new DirectoryInfo(Path.Combine(config.ArtifactStorePath.FullName, config.PackagesCache));
            var downloader = new PostgresPackageDownloader(new PostgresDownloaderConfig(cacheDir));
            var distro     = new Distribution.Distribution(new Version("9.3.20"), OSPlatform.Windows, Architecture.X64);

            var package = downloader.GetPackage(distro);

            Assert.NotNull(package);
        }
示例#8
0
        public DistributionPackage GetPackage(Distribution.Distribution distribution)
        {
            var distroPath = GetFileName(distribution);

            if (File.Exists(distroPath))
            {
                return(new DistributionPackage(distroPath));
            }

            return(DownloadPackageAsync(distribution));
        }
示例#9
0
        private DirectoryInfo GenerateDistroPath(Distribution.Distribution distribution)
        {
            var newDistroDirectory = $"{Guid.NewGuid()}-{distribution.Version}-{distribution.BitSize.ToString()}"
                                     .ToLowerInvariant();

            var path = new DirectoryInfo(Path.Combine(storePath.FullName, config.DistributionsRoot, newDistroDirectory));

            if (!path.Exists)
            {
                path.Create();
            }
            return(path);
        }
示例#10
0
 public PostgresConfig(
     Distribution.Distribution distribution,
     int port,
     string dbName, string dataDir,
     string user, string password,
     IReadOnlyCollection <string> additionalParams)
 {
     Distribution     = distribution;
     Port             = port;
     DatabaseName     = dbName;
     DataDir          = dataDir;
     Username         = user;
     Password         = password;
     AdditionalParams = additionalParams;
 }
        Dictionary <double, double> raw_statistics; //Исходный ряд (либо группированный, либо простой)
                                                    //Используется для расчет точечных оценок и построения
                                                    //теоретической функции


        #region CONSTRUCTORS
        public BinomialDistribution(Distribution.Distribution distr, int number_of_experiments) : base(distr)
        {
            raw_statistics = distr.StatFreq;
            n = number_of_experiments;

            //Вычисляем вероятность благоприятного исхода
            double mean = new NumericSolver(raw_statistics).Mean();

            p = mean / n;

            point_values = new List <PointValue>
            {
                new PointValue("Вероятность появления события", Resources.binomial_p, p)
            };
        }
示例#12
0
        public DistributionPackage GetDistributionPackage(Distribution.Distribution distribution)
        {
            var artifactStorePath = storePath;
            var packageResolver   = config.PackageResolver;

            if (!artifactStorePath.Exists)
            {
                artifactStorePath.Create();
                artifactStorePath.CreateSubdirectory(config.PackagesCache);
                artifactStorePath.CreateSubdirectory(config.DistributionsRoot);
            }

            var distroPath = GenerateDistroPath(distribution);

            return(packageResolver.Setup(distribution, distroPath));
        }
示例#13
0
        private static Uri GenerateUrl(Distribution.Distribution distribution)
        {
            var fileExt = distribution.Platform == OSPlatform.Linux ? "tar.gz" : "zip";

            var urlBuilder = new StringBuilder("postgresql-", 1024);

            urlBuilder.Append(distribution.Version.SemVersion);
            urlBuilder.Append(distribution.Version.SemVersion < new SemVersion(9, 6, 6) ? "-2-" : "-3-");
            urlBuilder.Append(distribution.Platform.ToString().ToLowerInvariant());

            if (distribution.BitSize == Architecture.X64)
            {
                urlBuilder.Append("-x64");
            }

            urlBuilder.Append("-binaries.");
            urlBuilder.Append(fileExt);

            return(new Uri(urlBuilder.ToString(), UriKind.Relative));
        }
		public AbstractDistribution(Distribution.Distribution distr)
		{
			this.distr = distr;
		}
示例#15
0
 public AbstractDistribution(Distribution.Distribution distr)
 {
     this.distr = distr;
 }