public static IEnumerable<string> GetCreditCardNumbers(this Random random, PrefixAndLength[] prefixAndLengthList, int howMany)
        {
            var result = new Stack<string>();
            for (int i = 0; i < howMany; i++)
            {
                int randomPrefix = random.Next(0, prefixAndLengthList.Length - 1);

                var prefixAndLength = prefixAndLengthList[randomPrefix];

                result.Push(CreateFakeCreditCardNumber(random, prefixAndLength.Prefix, prefixAndLength.Length));
            }

            return result;
        }
 /// <summary>
 /// Better to use extension overload with [this Random random] paramenter. See http://stackoverflow.com/questions/2706500/how-do-i-generate-a-random-int-number-in-c
 /// </summary>
 /// <param name="prefixAndLengthList"></param>
 /// <param name="howMany"></param>
 /// <returns></returns>
 public static IEnumerable<string> GetCreditCardNumbers(PrefixAndLength[] prefixAndLengthList,
     int howMany)
 {
     Random rndGen = new Random();
     return GetCreditCardNumbers(rndGen, prefixAndLengthList, howMany);
 }