当前位置: 首页>>代码示例>>C#>>正文


C# NormalDistribution.NextDouble方法代码示例

本文整理汇总了C#中NormalDistribution.NextDouble方法的典型用法代码示例。如果您正苦于以下问题:C# NormalDistribution.NextDouble方法的具体用法?C# NormalDistribution.NextDouble怎么用?C# NormalDistribution.NextDouble使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在NormalDistribution的用法示例。


在下文中一共展示了NormalDistribution.NextDouble方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GenerateRandomNum

        //---------------------------------------------------------------------

        private static double GenerateRandomNum(Distribution dist, double parameter1, double parameter2)
        {
            double randomNum = 0.0;
            if(dist == Distribution.normal)
            {
                NormalDistribution randVar = new NormalDistribution(RandomNumberGenerator.Singleton);
                randVar.Mu = parameter1;      // mean
                randVar.Sigma = parameter2;   // std dev
                randomNum = randVar.NextDouble();
            }
            if(dist == Distribution.lognormal)
            {
                LognormalDistribution randVar = new LognormalDistribution(RandomNumberGenerator.Singleton);
                randVar.Mu = parameter1;      // mean
                randVar.Sigma = parameter2;   // std dev
                randomNum = randVar.NextDouble();
            }
            if(dist == Distribution.gamma)
            {
                GammaDistribution randVar = new GammaDistribution(RandomNumberGenerator.Singleton);
                randVar.Alpha = parameter1;      // mean
                randVar.Theta = parameter2;   // std dev
                randomNum = randVar.NextDouble();
            }
            if(dist == Distribution.Weibull)
            {
                WeibullDistribution randVar = new WeibullDistribution(RandomNumberGenerator.Singleton);
                randVar.Alpha = parameter1;      // mean
                randVar.Lambda = parameter2;   // std dev
                randomNum = randVar.NextDouble();
            }
            return randomNum;
        }
开发者ID:LANDIS-II-Foundation,项目名称:Extensions-Disturbance,代码行数:35,代码来源:Weather.cs

示例2: Run

        //---------------------------------------------------------------------
        ///<summary>
        /// Run the Biomass Insects extension at a particular timestep.
        ///</summary>
        public override void Run()
        {

            running = true;
            UI.WriteLine("   Processing landscape for Biomass Insect events ...");

            foreach(IInsect insect in manyInsect)
            {

                if(insect.MortalityYear == Model.Core.CurrentTime)
                    Outbreak.Mortality(insect);

                // Copy the data from current to last
                foreach (ActiveSite site in Model.Core.Landscape)
                    insect.LastYearDefoliation[site] = insect.ThisYearDefoliation[site];

                insect.ThisYearDefoliation.ActiveSiteValues = 0.0;
                //SiteVars.BiomassRemoved.ActiveSiteValues = 0;

                insect.ActiveOutbreak = false;
                insect.SingleOutbreakYear = false;

                NormalDistribution randVar = new NormalDistribution(RandomNumberGenerator.Singleton);
                randVar.Mu = 0;      // mean
                randVar.Sigma = 1;   // std dev
                double randomNum = randVar.NextDouble();

                ExponentialDistribution randVarE = new ExponentialDistribution(RandomNumberGenerator.Singleton);
                randVarE.Lambda = insect.MeanDuration;      // rate
                double randomNumE = randVarE.NextDouble();

                // First, has enough time passed since the last outbreak?
                double timeBetweenOutbreaks = insect.MeanTimeBetweenOutbreaks + (insect.StdDevTimeBetweenOutbreaks * randomNum);
                //double duration = insect.MeanDuration + (insect.StdDevDuration * randomNum);
                double duration = Math.Round(randomNumE + 1);
                
                if (duration > 5) // Limit maximum outbreak duration to 5 years for now.
                    duration = duration - 3;

                double timeAfterDuration = timeBetweenOutbreaks - duration;

                //UI.WriteLine("Calculated time between = {0}.  inputMeanTime={1}, inputStdTime={2}.", timeBetweenOutbreaks, insect.MeanTimeBetweenOutbreaks, insect.StdDevTimeBetweenOutbreaks);
                //UI.WriteLine("Calculated duration     = {0}.  inputMeanDura={1}, inputStdDura={2}.", duration, insect.MeanDuration, insect.StdDevDuration);
                //UI.WriteLine("Insect Start Time = {0}, Stop Time = {1}.", insect.OutbreakStartYear, insect.OutbreakStopYear);


                if(Model.Core.CurrentTime == 1)
                {
                    //UI.WriteLine("   Year 1:  Setting initial start and stop times.");
                    insect.OutbreakStartYear = (int) (timeBetweenOutbreaks / 2.0) + 1;
                    insect.OutbreakStopYear  = insect.OutbreakStartYear + (int) duration - 1;
                    UI.WriteLine("   {0} is not active.  StartYear={1}, StopYear={2}, CurrentYear={3}.", insect.Name, insect.OutbreakStartYear, insect.OutbreakStopYear, Model.Core.CurrentTime);
                }
                else if(insect.OutbreakStartYear <= Model.Core.CurrentTime
                    && insect.OutbreakStopYear > Model.Core.CurrentTime)
                {
                    //UI.WriteLine("   An outbreak starts or continues.  Start and stop time do not change.");
                    insect.ActiveOutbreak = true;
                    UI.WriteLine("   {0} is active.  StartYear={1}, StopYear={2}, CurrentYear={3}.", insect.Name, insect.OutbreakStartYear, insect.OutbreakStopYear, Model.Core.CurrentTime);

                    insect.MortalityYear = Model.Core.CurrentTime + 1;

                }
                //Special case for single year outbreak.
                else if(insect.OutbreakStartYear <= Model.Core.CurrentTime
                    && insect.OutbreakStopYear <= Model.Core.CurrentTime)
                {
                    insect.ActiveOutbreak = true;
                    UI.WriteLine("   {0} is active.  StartYear={1}, StopYear={2}, CurrentYear={3}.", insect.Name, insect.OutbreakStartYear, insect.OutbreakStopYear, Model.Core.CurrentTime);

                    if (insect.OutbreakStartYear == insect.OutbreakStopYear)
                        insect.SingleOutbreakYear = true;
                    insect.MortalityYear = Model.Core.CurrentTime + 1;
                    insect.OutbreakStartYear = Model.Core.CurrentTime + (int)timeBetweenOutbreaks;
                    insect.OutbreakStopYear = insect.OutbreakStartYear + (int)duration - 1;
                }

                else if(insect.OutbreakStopYear <= Model.Core.CurrentTime
                    && timeAfterDuration > Model.Core.CurrentTime - insect.OutbreakStopYear)
                {
                    //UI.WriteLine("   In between outbreaks, reset start and stop times.");
                    insect.ActiveOutbreak = true;
                    UI.WriteLine("   {0} is active.  StartYear={1}, StopYear={2}, CurrentYear={3}.", insect.Name, insect.OutbreakStartYear, insect.OutbreakStopYear, Model.Core.CurrentTime);

                    insect.MortalityYear = Model.Core.CurrentTime + 1;
                    insect.OutbreakStartYear = Model.Core.CurrentTime + (int) timeBetweenOutbreaks;
                    insect.OutbreakStopYear = insect.OutbreakStartYear + (int) duration - 1;
                }
                //UI.WriteLine("  Insect Start Time = {0}, Stop Time = {1}.", insect.OutbreakStartYear, insect.OutbreakStopYear);

                if(insect.ActiveOutbreak)
                {
                    //UI.WriteLine("   OutbreakStartYear={0}.", insect.OutbreakStartYear);

                    if(insect.OutbreakStartYear == Model.Core.CurrentTime || insect.SingleOutbreakYear)
                        // Initialize neighborhoodGrowthReduction with patches
//.........这里部分代码省略.........
开发者ID:LANDIS-II-Foundation,项目名称:Extensions-Disturbance,代码行数:101,代码来源:PlugIn.cs

示例3: output

        // TWO FUNCTIONS BELOW USED FOR LANDSCAPE TESTING
        /*private IOutputRaster<UShortPixel> CreateUShortMap(int currentTime, string agentName)
        {
            string path = MapNames.ReplaceTemplateVars("./tests/BDA/{agentName}/vulnerability-{timestep}.gis", agentName, currentTime);
//            string path = MapNames.ReplaceTemplateVars("./tests/BDA/{agentName}/outbreakzones-{timestep}.gis", agentName, currentTime);
            UI.WriteLine("Writing BDA output (with ushort values) map to {0} ...", path);
            return Util.Raster.Create<UShortPixel>(path,
                                                     Model.LandscapeMapDims,
                                                     Model.LandscapeMapMetadata);
        }
        private IOutputRaster<UShortPixel> CreateUShortMap2(int currentTime, string agentName)
        {
            string path = MapNames.ReplaceTemplateVars("./tests/BDA/{agentName}/neighbor_resources-{timestep}.gis", agentName, currentTime);
            UI.WriteLine("Writing BDA output (with ushort values) map to {0} ...", path);
            return Util.Raster.Create<UShortPixel>(path,
                                                     Model.LandscapeMapDims,
                                                     Model.LandscapeMapMetadata);
        }*/
        //---------------------------------------------------------------------
        private static int TimeToNext(IAgent activeAgent, int Timestep)
        {
            int timeToNext = 0;
            if (activeAgent.RandFunc == RandomFunction.RFuniform){
                int MaxI = (int) Math.Round(activeAgent.RandomParameter1);
                int MinI = (int) Math.Round(activeAgent.RandomParameter2);
                timeToNext =
                   (MinI - activeAgent.TimeSinceLastEpidemic) +
                   (int) (Landis.Util.Random.GenerateUniform() * (MaxI - MinI));

                //UI.WriteLine("RFuniform: TimeSince={0}, TimeToNext={1}", activeAgent.TimeSinceLastEpidemic, timeToNext);
                //    (activeAgent.TimeSinceLastEpidemic + timeToNext));

            }
            else if (activeAgent.RandFunc == RandomFunction.RFnormal){
                /*NormalRandomVar randVar = new NormalRandomVar(activeAgent.RandomParameter1, activeAgent.RandomParameter2);
                int randNum = (int)randVar.GenerateNumber();
                timeToNext = randNum - activeAgent.TimeSinceLastEpidemic ;
                */

                NormalDistribution randVar = new NormalDistribution(RandomNumberGenerator.Singleton);
                randVar.Mu = activeAgent.RandomParameter1;
                randVar.Sigma = activeAgent.RandomParameter2;
                int randNum = (int)randVar.NextDouble();
                timeToNext = randNum - activeAgent.TimeSinceLastEpidemic;


                // Interval times are always rounded up to the next time step increment.
                // This bias can be removed by reducing times by half the time step.
                timeToNext = timeToNext - (Timestep / 2);

                //UI.WriteLine("RFnormal: TimeSince={0}, TimeToNext={1}", activeAgent.TimeSinceLastEpidemic, timeToNext);
                    //(activeAgent.TimeSinceLastEpidemic + timeToNext));
                if (timeToNext < 0) timeToNext = 0;
            }
            return timeToNext;
        }
开发者ID:pjbitterman,项目名称:Extensions-Disturbance,代码行数:56,代码来源:PlugIn.cs


注:本文中的NormalDistribution.NextDouble方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。