Implements a BoxMuller method for generating statistically normal random numbers.
Esempio n. 1
0
 public void GenerateValues()
 {
     GaussianDistribution r = new GaussianDistribution(0, 1, -1, 1);
     StringBuilder sb = new StringBuilder();
     for (int x = 0; x < 10000; x++)
     {
         sb.AppendLine(r.Next().ToString());
     }
     Clipboard.SetText(sb.ToString());
 }
        /// <summary>
        /// Initializes <see cref="MovingValueInputAdapter"/>.
        /// </summary>
        public override void Initialize()
        {
            m_random = new Random(Guid.NewGuid().GetHashCode());
            Dictionary<string, string> settings;
            string setting;

            base.Initialize();
            settings = Settings;

            if (!settings.TryGetValue("publishRate", out setting) || !double.TryParse(setting, out m_publishRate))
                m_publishRate = DefaultPublishRate;

            if (m_publishRate <= 0.0D)
                throw new InvalidOperationException(string.Format("publishRate({0}) must be greater than zero", m_publishRate));

            double latency;
            double jitter;
            if (!settings.TryGetValue("latency", out setting) || !double.TryParse(setting, out latency))
                latency = DefaultLatency;

            if (!settings.TryGetValue("jitter", out setting) || !double.TryParse(setting, out jitter))
                jitter = DefaultJitter;

            //Clips at 3 time the latency and 1/3 latency
            m_latency = new GaussianDistribution(latency, jitter, latency / 3, latency * 3);
        }