static void DoTest(RandomOps.Random Rand) { int i; Console.WriteLine("RNG name: {0}", Rand.Name); Console.WriteLine(); if (TestByte) { Console.WriteLine("Byte()"); int[] ByteCounts = new int[Byte.MaxValue + 1]; ZeroCounts(ByteCounts); for (i = 0; i < ByteIterations; i++) { ByteCounts[Rand.Byte()] += 1; } PrintCounts(ByteCounts); Console.WriteLine(); } Console.WriteLine("Bytes({0})", NumBytes); byte[] byteArr = Rand.Bytes(NumBytes); for (i = 0; i < NumBytes; i++) { Console.WriteLine(byteArr[i]); } Console.WriteLine(); Console.WriteLine("Uniform()"); for (i = 0; i < NumIterations; i++) { Console.WriteLine(Rand.Uniform()); } Console.WriteLine(); Console.WriteLine("Uniform(-3, -1)"); for (i = 0; i < NumIterations; i++) { Console.WriteLine(Rand.Uniform(-3, -1)); } Console.WriteLine(); Console.WriteLine("Uniform(-2, 2)"); for (i = 0; i < NumIterations; i++) { Console.WriteLine(Rand.Uniform(-2, 2)); } Console.WriteLine(); Console.WriteLine("Uniform(3, 5)"); for (i = 0; i < NumIterations; i++) { Console.WriteLine(Rand.Uniform(3, 5)); } Console.WriteLine(); Console.WriteLine("Gauss({0}, {1})", GaussMean, GaussDeviation); for (i = 0; i < NumIterations; i++) { Console.WriteLine(Rand.Gauss(GaussMean, GaussDeviation)); } Console.WriteLine(); double sum = 0; for (i = 0; i < MeanIterations; i++) { sum += Rand.Uniform(); } Console.WriteLine("Mean of {0} x Uniform(): {1:0.0000}", MeanIterations, sum / MeanIterations); Console.WriteLine(); sum = 0; for (i = 0; i < MeanIterations; i++) { sum += Rand.Gauss(0, 1); } Console.WriteLine("Mean of {0} x Gauss(0, 1): {1:0.0000}", MeanIterations, sum / MeanIterations); Console.WriteLine(); Console.WriteLine("Disk()"); PrintPoint(Rand.Disk()); Console.WriteLine(); Console.WriteLine("Circle()"); PrintPoint(Rand.Circle()); Console.WriteLine(); Console.WriteLine("Sphere3()"); PrintPoint(Rand.Sphere3()); Console.WriteLine(); Console.WriteLine("Sphere4()"); PrintPoint(Rand.Sphere4()); Console.WriteLine(); Console.WriteLine("Sphere({0}, {1})", SphereDim, SphereRadius); PrintPoint(Rand.Sphere(SphereDim, SphereRadius)); Console.WriteLine(); if (TestBool) { Console.WriteLine("Bool()"); int countTrue = 0; int countFalse = 0; for (i = 0; i < BoolIterations; i++) { if (Rand.Bool()) { countTrue++; } else { countFalse++; } } Console.WriteLine("True: {0}", countTrue); Console.WriteLine("False: {0}", countFalse); Console.WriteLine(); } Console.WriteLine("Index({0})", MaxIndex); ZeroCounts(IndexCounts); for (i = 0; i < IndexIterations; i++) { int idx = Rand.Index(MaxIndex); IndexCounts[idx] += 1; } PrintCounts(IndexCounts); Console.WriteLine(); Console.WriteLine("Index2({0}, ...)", MaxIndex); ZeroCounts(IndexCounts); for (i = 0; i < IndexIterations; i++) { int idx1, idx2; Rand.Index2(MaxIndex, out idx1, out idx2); Debug.Assert(idx1 != idx2); IndexCounts[idx1] += 1; IndexCounts[idx2] += 1; } PrintCounts(IndexCounts); Console.WriteLine(); RandomOps.Set RandSet = new RandomOps.Set(Rand, RandSetSize); Console.WriteLine("RandSet.Reset()"); RandSet.Reset(); Console.WriteLine(); Console.WriteLine("RandSet.Draw() with set of size {0} and {1} iterations", RandSetSize, SetIterations / 2); for (i = 0; i < SetIterations / 2; i++) { Console.WriteLine(RandSet.Draw()); } Console.WriteLine(); Console.WriteLine("RandSet.Reset()"); Console.WriteLine("RandSet.Draw() with set of size {0}", RandSetSize); RandSet.Reset(); for (i = 0; i < SetIterations; i++) { Console.WriteLine(RandSet.Draw()); } Console.WriteLine(); //RandSet.Draw(); // Assertion fails. Console.WriteLine("RandSet.ResetExclude({0})", RandSetExclude); Console.WriteLine("RandSet.Draw() with set of size {0}", RandSetSize); RandSet.ResetExclude(RandSetExclude); for (i = 0; i < SetIterations - 1; i++) { Console.WriteLine(RandSet.Draw()); } Console.WriteLine(); //RandSet.Draw(); // Assertion fails. ZeroCounts(SetCounts); Console.WriteLine("RandSet.Draw() with set of size {0}", RandSetSize); for (i = 0; i < SetIterations2; i++) { RandSet.Reset(); while (RandSet.Size > 0) { int idx = RandSet.Draw(); SetCounts[idx] += 1; } } PrintCounts(SetCounts); Console.WriteLine(); InitSetProbabilities(Rand); ZeroCounts(IndexDistributionCounts); Console.WriteLine("Rand.Index() with probability distribution"); for (i = 0; i < IndexDistributionIterations; i++) { int idx = Rand.Index(IndexProbabilities); IndexDistributionCounts[idx] += 1; } PrintDistributionCounts(); Console.WriteLine(); RandomOps.IndexDistribution IndexDistribution = new RandomOps.IndexDistribution(Rand, IndexProbabilities); ZeroCounts(IndexDistributionCounts); Console.WriteLine("IndexDistribution.DrawLinearSearch()"); for (i = 0; i < IndexDistributionIterations; i++) { int idx = IndexDistribution.DrawLinearSearch(); IndexDistributionCounts[idx] += 1; } PrintDistributionCounts(); Console.WriteLine(); ZeroCounts(IndexDistributionCounts); Console.WriteLine("IndexDistribution.DrawBinarySearch()"); for (i = 0; i < IndexDistributionIterations; i++) { int idx = IndexDistribution.DrawBinarySearch(); IndexDistributionCounts[idx] += 1; } PrintDistributionCounts(); Console.WriteLine(); }