private void gammaMagicButton_Click(object sender, EventArgs e) { var N = (int)gammaNNumericUpDown.Value; var L = (double)gammaLNumericUpDown.Value; var generator = new GammaGenerator(randomGenerator, L, N); var sequence = new Sequence(generator, SequenceLength); ShowValues(sequence, null, null); }
private void button1_Click(object sender, EventArgs e) { UniformGenerator UnifGen = new UniformGenerator(Convert.ToDouble(tbLeft.Text), Convert.ToDouble(tbRight.Text)); GammaGenerator GammaGen = new GammaGenerator(Convert.ToDouble(tbKParam.Text), Convert.ToDouble(tbθParam.Text)); int RequestCount = (int)udRequestCount.Value; double Time = Convert.ToDouble(tbTime.Text); double TotalTime = 0; double dT = Convert.ToDouble(tbTimeStep.Text); int i = 0; Queue <Request> Queue = new Queue <Request>(); double GenTime = UnifGen.Next(); double ServiceMachineTime = GammaGen.Next(); List <double> RequesTimes = new List <double>(); int MaxQueueLength = 0; int MiddleQueueLength = 0; int QueueCount = 0; do { if (GenTime <= 0) { GenTime = UnifGen.Next(); Queue.Enqueue(new Request(i, TotalTime)); if (Queue.Count > MaxQueueLength) { MaxQueueLength = Queue.Count; } MiddleQueueLength += Queue.Count; QueueCount++; } if ((ServiceMachineTime <= 0) && (Queue.Count > 0)) { ServiceMachineTime = GammaGen.Next(); Request Req = Queue.Dequeue(); i++; if (cbInverseLink.Checked) { Queue.Enqueue(new Request(i, TotalTime)); if (Queue.Count > MaxQueueLength) { MaxQueueLength = Queue.Count; } MiddleQueueLength += Queue.Count; QueueCount++; } RequesTimes.Add(TotalTime - Req.EntranceTime); } TotalTime += dT; GenTime -= dT; ServiceMachineTime -= dT; }while (rbCount.Checked ? i < RequestCount : TotalTime < Time); double TimeSum = 0; foreach (double T in RequesTimes) { TimeSum += T; } double AverageTime = TimeSum / RequesTimes.Count; tbMaxQueueLength.Text = MaxQueueLength.ToString(); tbAverageStayTime.Text = AverageTime.ToString("00.0000"); //tbAverageQueueLength.Text = (MiddleQueueLength / QueueCount).ToString("00.0000"); if (rbCount.Checked) { textBox1.Text = TotalTime.ToString("0.0000"); } else { textBox1.Text = i.ToString(); } }
private async void GenerateButton_Click(object sender, EventArgs e) { string distribution = DistributionComboBox.SelectedItem.ToString(); int count = (int)CountInput.Value; int seed = (int)SeedInput.Value; int multiplier = (int)MultiplierInput.Value; int range = (int)RangeInput.Value; bool showAllNumbers = !DisplayedNumbersLimiter.Checked; IGenerator generator; MLCG generatorMLCG = new MLCG(seed, multiplier, range); ClearComponents(); GeneratingProgress.Maximum = count; switch (distribution) { case "Uniform": generator = new UniformGenerator(Input1.Value, Input2.Value, generatorMLCG); break; case "Gauss": generator = new GaussGenerator(Input1.Value, Input2.Value, Input3.Value, count, generatorMLCG); break; case "Exponential": generator = new ExponentialGenerator(Input1.Value, generatorMLCG); break; case "Gamma": generator = new GammaGenerator(Input1.Value, Input2.Value, count, generatorMLCG); break; case "Triangular": generator = new TriangularGenerator(Input1.Value, Input2.Value, TriangularMinCheckBox.Checked, count, generatorMLCG); break; case "Simpson": generator = new SimpsonGenerator(Input1.Value, Input2.Value, count, generatorMLCG); break; default: generator = generatorMLCG; break; } await Task.Factory.StartNew(() => { ProgressStage("Generating numbers..."); for (int i = 0; i < count; i++) { if (showAllNumbers || i < 100) { string row = $"{i + 1}. {generator.NextNumber()}"; ExecuteInUIThread(() => NumbersList.Items.Add(row)); } else { generator.NextNumber(); } ExecuteInUIThread(() => GeneratingProgress.Value++); } ProgressStage("Calculating statistics..."); Calculations calculations = new Calculations(generator); AddToOutputBox($"M = {calculations.ExpectedValue:F5}"); AddToOutputBox($"D = {calculations.Variance:F5}"); AddToOutputBox($"σ = {calculations.StandardDeviation:F5}"); ProgressStage("Building plot..."); calculations.BuildHistogram(Plot.plt); Plot.Render(); ProgressStage("Complete."); }); }