public Transact Generate() { Time += _rand.Next(); return(new Transact { Time = Time, Status = TransactStatus.Prepared }); }
public bool ProcessTransact(Transact transact) { if (transact.Status == TransactStatus.Prepared) { transact.Status = TransactStatus.Processed; EnQueueTransact(transact); return(true); } if (transact.Status == TransactStatus.ReProc) { transact.Time += _rand.Next(); transact.Status = TransactStatus.Processed; transact.Device = CompSystem.Processor; transact.Device.EnQueueTransact(transact); return(true); } if (transact.Status == TransactStatus.Finished) { transact.Status = TransactStatus.Released; ReleaseBlock(); Time = transact.Time; return(true); } if (TakeBlock()) { DeQueueTransact(transact); transact.Device = CompSystem.Processor; transact.Device.EnQueueTransact(transact); return(true); } else { if (transact.Time < Time) { transact.Time = Time; } transact.Status = TransactStatus.Waiting; return(false); } }
public void CheckOrderStatistics03() { double lower = -10; double upper = 0; UniformRandom rand = new UniformRandom(lower, upper, new Random()); double[] values = new double[maxNumbers]; for (int i = 0; i < maxNumbers; i++) { values[i] = rand.Next(); Assert.LessOrEqual(lower, values[i], "The value should be higher than lower"); Assert.GreaterOrEqual(upper, values[i], "The value should be lower than higher"); } double average = values.Average(); Assert.AreEqual((lower + upper) / 2, average, tolerance * 10); double sumOfSquaresOfDifferences = values.Select(val => (val - average) * (val - average)).Sum(); double variance = sumOfSquaresOfDifferences / values.Length; Assert.AreEqual((upper - lower) * (upper - lower) / 12, variance, tolerance); }
static void Main(string[] args) { Console.WriteLine("Exponential Random:\n"); Console.Write("Enter lambda: "); string lambdaLine = Console.ReadLine(); IRandom random = new ExponentialRandom(); if (double.TryParse(lambdaLine, out double lambda)) { random = new ExponentialRandom(lambda); } List <double> list = new List <double>(10000); for (int i = 0; i < 10000; i++) { list.Add(random.Next()); } Show(list); random.DistributionStatistics(); DistributionStatistics(list); Console.WriteLine(" chi-square: " + random.IndificateDistributionLaw(list).ToString("F3")); Console.WriteLine("\nUniform Random:\n"); random = new UniformRandom(); list = new List <double>(10000); for (int i = 0; i < 10000; i++) { list.Add(random.Next()); } Show(list); random.DistributionStatistics(); DistributionStatistics(list); Console.WriteLine(" chi-square: " + random.IndificateDistributionLaw(list).ToString("F3")); Console.WriteLine("\nGauss Random:\n"); Console.Write("Enter sigma: "); string sigmaLine = Console.ReadLine(); Console.Write("Enter alpha: "); string alphaLine = Console.ReadLine(); random = new GaussRandom(); if (double.TryParse(sigmaLine, out double sigma) && double.TryParse(alphaLine, out double alpha)) { random = new GaussRandom(sigma, alpha); } list = new List <double>(10000); for (int i = 0; i < 10000; i++) { list.Add(random.Next()); } Show(list); random.DistributionStatistics(); DistributionStatistics(list); Console.WriteLine(" chi-square: " + random.IndificateDistributionLaw(list).ToString("F3")); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); }