public static string GenerateDomainName(int numberOfLabels)
        {
            if (numberOfLabels < 1)
            {
                throw new ArgumentException();
            }

            var minLength  = numberOfLabels * 3;
            var wordLength = random.Next(minLength, RandomDomainNameGenerator.MaxDomainNameLength + 1);

            string randomWord = RandomWordGenerator.GenerateWord(wordLength);

            IList <int> dotPositions = RandomDomainNameGenerator.GenerateDotPositions(wordLength, numberOfLabels);

            return(RandomDomainNameGenerator.ReplaceStringPositionsByDots(randomWord, dotPositions));
        }
        static void Main(string[] args)
        {
            Regex regex = new Regex(@"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)+$");

            for (int tries = 0; tries < 100; ++tries)
            {
                int labels = random.Next(1, 40);
                Console.WriteLine("Labels: {0}", labels);

                string domainName = RandomDomainNameGenerator.GenerateDomainName(labels);
                Console.WriteLine("Domain: {0}", domainName);

                Debug.Assert(regex.IsMatch(domainName), string.Format("The domain name '{0}' is not valid", domainName));
            }

            Console.ReadLine();
        }