Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int size = 100000000;
- double sizeInMegabytes = (size * 8.0) / 1024.0 / 1024.0; //762 mb
- double[] randomNumbers = new double[size];
- private static IRandomGenerator rnd = new MersenneTwister();
- private static IDistribution dist = new DiscreteNormalDistribution(1048576);
- private static List<double> ndRandomNumbers = new List<double>();
- private static void AddNDRandomNumbers(int numberOfRandomNumbers) {
- for (int i = 0; i < numberOfRandomNumbers; i++) {
- ndRandomNumbers.Add(dist.ICDF(rnd.nextUniform()));
- }
- }
- int blockSize = 1000000;
- while (true) {
- try
- {
- AddNDRandomNumbers(blockSize);
- }
- catch (System.OutOfMemoryException ex)
- {
- break;
- }
- }
- double arrayTotalSizeInMegabytes = (ndRandomNumbers.Count * 8.0) / 1024.0 / 1024.0;
- private static IEnumerable<double> MakeRandomNumbers(int numberOfRandomNumbers)
- {
- for (int i = 0; i < numberOfRandomNumbers; i++)
- {
- yield return randomGenerator.GetAnotherRandomNumber();
- }
- }
- ...
- // Hooray, we won't run out of memory!
- foreach(var number in MakeRandomNumbers(int.MaxValue))
- {
- Console.WriteLine(number);
- }
Add Comment
Please, Sign In to add comment