public VaccinationSimulation(MonteCarloSettings monteCarloSettings, EventSimulationSettings eventSimulationSettings, VaccinationSettings vaccinationSettings) : base(monteCarloSettings, eventSimulationSettings) { VaccinSettings = vaccinationSettings; _afterEventObservables = new SimulationObservable <AfterEventValues>(); _afterReplicationObservables = new SimulationObservable <AfterReplicationValues>(); _experimentObservables = new SimulationObservable <DoctorsExperimentValues>(); ExaminationGen = new ExponentialGenerator(1d / 260); VaccinationGen = new TriangularGenerator(20, 100, 75); RegistrationGen = new UniformGenerator(140, 220); WaitingGen = new Random(); PatientsGen = new Random(); ArrivalGen = new Random(); if (VaccinSettings.DoctorsExperimentEnabled) { MCSettings.Replications = (VaccinSettings.DoctorsMax - VaccinSettings.DoctorsMin + 1) * VaccinSettings.ExperimentReplications; _currentDoctorsCount = VaccinSettings.DoctorsMin; } Init(); }
[TestMethod] public void uniform_value_should_be_between_0_and_1() { UniformGenerator uniform = new UniformGenerator(); double value = uniform.Generate(); Assert.IsTrue(value >= 0 && value <= 1); }
public void TestRandomNumbers() { UniformGenerator generator = new UniformGenerator(new Range(0.0001f, 0.011f), DateTime.Now.Millisecond); for (int i = 0; i < 100; i++) { Console.WriteLine(generator.Next() + " "); } }
public void AdditiveRecurrenceDouble() { IUniformSource source = new AdditiveRecurrence(1, 1, 5, 2); var g = new UniformGenerator(source); Assert.AreEqual(0.61803398874989468, g.Double()); Assert.AreEqual(0.23606797749978958, g.Double()); Assert.AreEqual(0.85410196624968449, g.Double()); }
public static Bitmap AddNoiseToImage(Bitmap input) { // create random generator IRandomNumberGenerator generator = new UniformGenerator(new Range(-50, 50)); // create filter AdditiveNoise filter = new AdditiveNoise(generator); // apply the filter return(filter.Apply(input)); }
/// <summary> /// 增加噪点 /// </summary> /// <param name="bmp">原位图</param> public static void AddictiveNoise(Bitmap bmp) { // create random generator IRandomNumberGenerator generator = new UniformGenerator(new Range(-50, 50)); // create filter AdditiveNoise filter = new AdditiveNoise(generator); // apply the filter filter.ApplyInPlace(bmp); }
public Simulator(GeneratorType generatorType) { this.GeneratorType = generatorType; UniformGeneratorLoad = new UniformGenerator(); UniformGeneratorLoad.a = 10; UniformGeneratorLoad.b = 12; ExponentialGeneratorTravel = new ExponentialGenerator(); ExponentialGeneratorTravel.lambda = ((double)1 / (double)15); Congruential = new Generator(); Random = new Random(); }
public void GenerateBernoulliTrialsTest() { //Arrange UniformGenerator uniformGenerator = new UniformGenerator(4, 80); //Act int trials = uniformGenerator.GenerateBernoulliTrials(); //Assert Assert.IsTrue(trials < 80); }
[TestMethod] public void uniform_variance_should_be_1_12() { UniformGenerator uniform = new UniformGenerator(); double sum = 0.0; double nbValues = 10e6; for (int i = 0; i < nbValues; i++) { sum += Math.Pow(uniform.Generate() - 0.5, 2); } double variance = sum / nbValues; Assert.AreEqual(1.0 / 12, variance, 0.01); }
[TestMethod] public void uniform_average_should_be_0_5() { UniformGenerator uniform = new UniformGenerator(); double nbValues = 10e5; double sum = 0.0; for (int i = 0; i < nbValues; i++) { sum = sum + uniform.Generate(); } double avg = sum / nbValues; Assert.AreEqual(0.5, avg, 0.001); }
public Simulator() { uniformGeneratorAterrizaje = new UniformGenerator(); uniformGeneratorAterrizaje.a = 3; uniformGeneratorAterrizaje.b = 5; uniformGeneratorDespegue = new UniformGenerator(); uniformGeneratorDespegue.a = 2; uniformGeneratorDespegue.b = 4; convolutionGenerator = new ConvolutionGenerator(); exponentialGenerator = new ExponentialGenerator(); exponentialGenerator.lambda = (double)0.1; convolutionGenerator.mean = 80; convolutionGenerator.stDeviation = 30; generator = new Generator(); }
[TestMethod] public void uniform_instances_should_be_independants() { UniformGenerator uniform1 = new UniformGenerator(); UniformGenerator uniform2 = new UniformGenerator(); double nbValues = 10e4; List <double> listValuesUniform1 = new List <double>(); List <double> listValuesUniform2 = new List <double>(); for (int i = 0; i < nbValues; i++) { listValuesUniform1.Add(uniform1.Generate()); listValuesUniform2.Add(uniform2.Generate()); } CollectionAssert.AreNotEqual(listValuesUniform1, listValuesUniform2); }
/// <summary> /// Initialize random generators /// </summary> public void InitializeGenerators() { _uniformGenerators = new UniformGenerator[_length]; for (int i = 0; i < _length; i++) { //if (_ranges[i].Min < 1 && _ranges[i].Max > 1) //{ // _uniformGenerators[i] = new UniformGenerator(new Range(0, 1), DateTime.Now.Millisecond); //} //else //{ // _uniformGenerators[i] = new UniformGenerator(_ranges[i], DateTime.Now.Millisecond); //} _uniformGenerators[i] = new UniformGenerator(_ranges[i], DateTime.Now.Millisecond); } }
public void SobolRational() { IUniformSource source = new Sobol(new[] { 0, 1, 3 }, 1, 3, 7); var g = new UniformGenerator(source); Assert.AreEqual((Rational)0 / 1, g.Rational()); Assert.AreEqual((Rational)1 / 2, g.Rational()); Assert.AreEqual((Rational)1 / 4, g.Rational()); Assert.AreEqual((Rational)3 / 4, g.Rational()); Assert.AreEqual((Rational)1 / 8, g.Rational()); Assert.AreEqual((Rational)5 / 8, g.Rational()); Assert.AreEqual((Rational)3 / 8, g.Rational()); Assert.AreEqual((Rational)7 / 8, g.Rational()); Assert.AreEqual((Rational)11 / 16, g.Rational()); Assert.AreEqual((Rational)3 / 16, g.Rational()); Assert.AreEqual((Rational)15 / 16, g.Rational()); }
public void SobolDouble() { IUniformSource source = new Sobol(new[] { 0, 1, 3 }, 1, 3, 7); var g = new UniformGenerator(source); Assert.AreEqual(0.0, g.Double()); Assert.AreEqual(0.5, g.Double()); Assert.AreEqual(0.25, g.Double()); Assert.AreEqual(0.75, g.Double()); Assert.AreEqual(0.125, g.Double()); Assert.AreEqual(0.625, g.Double()); Assert.AreEqual(0.375, g.Double()); Assert.AreEqual(0.875, g.Double()); Assert.AreEqual(0.6875, g.Double()); Assert.AreEqual(0.1875, g.Double()); Assert.AreEqual(0.9375, g.Double()); }
public static Bitmap Additive(Bitmap image, Rectangle region, int amount) { int startX = region.Left; int startY = region.Top; int stopX = image.Width - 1; int stopY = image.Height - 1; if (startX + region.Width < image.Width) { stopX = startX + region.Width; } if (startY + region.Height < image.Height) { stopY = startX + region.Height; } Bitmap b = new Bitmap(image); BitmapData bmpData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, b.PixelFormat); IntPtr ptr = bmpData.Scan0; int stride = bmpData.Stride; int bytes = Math.Abs(bmpData.Stride) * b.Height; byte[] rgbValues = new byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); IRandomNumberGenerator generator = new UniformGenerator(new Range(-amount, amount)); Parallel.For(startY, stopY, y => { for (int x = startX; x < stopX; x++) { int i = y * stride + x * 4; rgbValues[i] = (byte)Math.Max(0, Math.Min(255, rgbValues[i] + generator.Next())); rgbValues[i + 1] = (byte)Math.Max(0, Math.Min(255, rgbValues[i + 1] + generator.Next())); rgbValues[i + 2] = (byte)Math.Max(0, Math.Min(255, rgbValues[i + 2] + generator.Next())); } }); System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes); b.UnlockBits(bmpData); return(b); }
public static byte[] ApplyFilter(byte[] imageBytes, ImageProcessingFilters filter, ImageFormat format = null) { IFilter baseFilter = null; switch (filter) { case ImageProcessingFilters.Default: return(imageBytes); case ImageProcessingFilters.GrayscaleBT709: baseFilter = new GrayscaleBT709(); break; case ImageProcessingFilters.GrayscaleRMY: baseFilter = new GrayscaleRMY(); break; case ImageProcessingFilters.GrayscaleY: baseFilter = new GrayscaleY(); break; case ImageProcessingFilters.BayerFilter: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.B)); ((FiltersSequence)baseFilter).Add(new BayerFilter()); break; /* * case ImageProcessingFilters.ImageWarp: * baseFilter = new ImageWarp( * break; * */ case ImageProcessingFilters.Channel_Red: baseFilter = new ExtractChannel(RGB.R); break; case ImageProcessingFilters.Channel_Green: baseFilter = new ExtractChannel(RGB.G); break; case ImageProcessingFilters.Channel_Blue: baseFilter = new ExtractChannel(RGB.B); break; case ImageProcessingFilters.WaterWave: baseFilter = new WaterWave(); ((WaterWave)baseFilter).HorizontalWavesCount = 10; ((WaterWave)baseFilter).HorizontalWavesAmplitude = 5; ((WaterWave)baseFilter).VerticalWavesCount = 3; ((WaterWave)baseFilter).VerticalWavesAmplitude = 15; break; case ImageProcessingFilters.Sepia: baseFilter = new Sepia(); break; case ImageProcessingFilters.BrightnessCorrection: baseFilter = new BrightnessCorrection(-50); break; case ImageProcessingFilters.ContrastCorrection: baseFilter = new ContrastCorrection(15); break; case ImageProcessingFilters.SaturationCorrection1: baseFilter = new SaturationCorrection(-0.5f); break; case ImageProcessingFilters.SaturationCorrection2: baseFilter = new SaturationCorrection(-.25f); break; case ImageProcessingFilters.SaturationCorrection3: baseFilter = new SaturationCorrection(+0.5f); break; case ImageProcessingFilters.Invert: baseFilter = new Invert(); break; case ImageProcessingFilters.Blur: baseFilter = new Blur(); break; case ImageProcessingFilters.RotateChannels: baseFilter = new RotateChannels(); break; case ImageProcessingFilters.RotateChannels2: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new RotateChannels()); ((FiltersSequence)baseFilter).Add(new RotateChannels()); break; case ImageProcessingFilters.AdditiveNoise: IRandomNumberGenerator generator = new UniformGenerator(new Range(-50, 50)); baseFilter = new AdditiveNoise(generator); break; case ImageProcessingFilters.GammaCorrection: baseFilter = new GammaCorrection(0.5); break; case ImageProcessingFilters.HistogramEqualization: baseFilter = new HistogramEqualization(); break; case ImageProcessingFilters.OrderedDithering: byte[,] matrix = new byte[4, 4] { { 95, 233, 127, 255 }, { 159, 31, 191, 63 }, { 111, 239, 79, 207 }, { 175, 47, 143, 15 } }; baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new OrderedDithering(matrix)); break; case ImageProcessingFilters.Pixallete: baseFilter = new Pixellate(); break; case ImageProcessingFilters.SimplePosterization: baseFilter = new SimplePosterization(); break; case ImageProcessingFilters.Texturer_Textile: baseFilter = new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Cloud: baseFilter = new Texturer(new AForge.Imaging.Textures.CloudsTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Marble: baseFilter = new Texturer(new AForge.Imaging.Textures.MarbleTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Wood: baseFilter = new Texturer(new AForge.Imaging.Textures.WoodTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Labyrinth: baseFilter = new Texturer(new AForge.Imaging.Textures.LabyrinthTexture(), 0.3, 0.7); break; case ImageProcessingFilters.SobelEdgeDetector: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); break; case ImageProcessingFilters.SobelEdgeDetectorInvert: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); break; case ImageProcessingFilters.SobelEdgeDetectorSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); break; case ImageProcessingFilters.SobelEdgeDetectorSepiaCanvas: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); break; case ImageProcessingFilters.Drawing: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); break; case ImageProcessingFilters.DrawingSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); break; case ImageProcessingFilters.OilCanvas: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); break; case ImageProcessingFilters.OilCanvasGray: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); break; case ImageProcessingFilters.OilCanvasSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); ((FiltersSequence)baseFilter).Add(new Sepia()); break; } if (baseFilter == null) { return(null); } return(ApplyFilter(imageBytes, baseFilter, format)); }
public PosionGenerator(int tries, int lambda) { _tries = tries; _lambda = lambda * 100; _generator = new UniformGenerator(0, 100); }
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."); }); }
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(); } }
/// <summary> /// Static generator initialization. /// </summary> static Util() { Gaussian = new GaussianGenerator(0, 1); Uniform = new UniformGenerator(new Range(0, 1)); }
private void init(bool force) { if (xug == null || force) { xug = new UniformGenerator(new DoubleRange(Constants.XUG_START, Constants.XUG_END), rg.Next()); yug = new UniformGenerator(new DoubleRange(Constants.YUG_START, Constants.YUG_END), rg.Next()); wug = new UniformGenerator(new DoubleRange(Constants.WUG_START, Constants.WUG_END), rg.Next()); // radius } }