コード例 #1
0
        /// <summary>
        /// 计算小球的半径
        /// 小球的半径的最大值 Rmax = 0.5
        /// 此处设置的是均匀随机分布,小球半径符合还可能符合对数正态分布等
        /// </summary>
        /// <returns></returns>
        private double ComputeRandomRadius(RandomType type)
        {
            //小球的半径是:[0.5-MaxRadiusBias ~ 0.5]*Rmax/0.5
            double radius = 0.0;

            switch (type)
            {
            case RandomType.AverageRandomType:
                radius = GenerateRandomNumber.AverageRandom(0.5 - MaxRadiusBias, 0.5);
                break;

            case RandomType.RandomLogNormalType:
                //第一批样品30~50um的的参数
                double maxD  = ActualSampleParameter.ActualSampleParaDict[PackingSystemSetting.ParticleSizeType].MaxDiameter;
                double minD  = ActualSampleParameter.ActualSampleParaDict[PackingSystemSetting.ParticleSizeType].MinDiameter;
                double sigma = ActualSampleParameter.ActualSampleParaDict[PackingSystemSetting.ParticleSizeType].LogSigma;
                double miu   = ActualSampleParameter.ActualSampleParaDict[PackingSystemSetting.ParticleSizeType].LogMiu;
                MaxRadiusBias = (1 - minD / maxD) / 2;

                double reso = MaxRadius / (maxD / 2);
                radius = GenerateRandomNumber.RandomLogNormal(miu,
                                                              sigma,
                                                              minD,
                                                              maxD) / 2;
                radius = radius * reso;

                break;

            case RandomType.RandomNormalType:
                break;
            }
            return(radius);
        }