Solved

Generating the random numbers using C#

Posted on 2006-11-22
5
188 Views
Last Modified: 2010-05-18
Hi,

Can you please provide me the working code in C# to generate the random numbers for the following requirements:

1) The Random numbers will have only Alphanumeric values (1,2,3,A,B,c...etc).
2) The function should accept the precision. i.e how much will be the length of the random numbers.
3) The function should accept the input for the count. For example if I input 3 with precision 8. The the code should generate three random numbers, each of length 8.
4) The output should be in the format: Number 1: ABCDEFGH, Number 2:ZZZZZZZ and so on

How can I do this?

Thanks for the help.

Run2004
0
Comment
Question by:run2004
  • 2
  • 2
5 Comments
 
LVL 23

Expert Comment

by:adathelad
ID: 17996888
Hi run2004,

This function will return an array of random numbers as you require:
private string[] GenerateRandomNumbers(int Count, int Precision)
        {
            string[] numbers = new String[Count];
            System.Text.StringBuilder numberBuilder = new System.Text.StringBuilder();
            string newNumber;

            for (int loop=0; loop < Count; loop++)
            {
                numberBuilder.Length = 0;
                while (numberBuilder.ToString().Length < Precision)
                {
                    numberBuilder.Append(System.Guid.NewGuid().ToString().Replace("-", ""));
                }

                newNumber = numberBuilder.ToString();
                if (newNumber.Length > Precision)
                {
                    newNumber = newNumber.Substring(0, Precision);
                }

                numbers[loop] = newNumber;
            }

            return numbers;
        }

0
 
LVL 23

Accepted Solution

by:
adathelad earned 350 total points
ID: 17996929
To get the output in the format "Number 1: .....", you can use this version:
private string GenerateRandomNumbers(int Count, int Precision)
        {
            System.Text.StringBuilder numberBuilder = new System.Text.StringBuilder();
            System.Text.StringBuilder numberString = new System.Text.StringBuilder();
            string newNumber;

            for (int loop=0; loop < Count; loop++)
            {
                numberBuilder.Length = 0;
                while (numberBuilder.ToString().Length < Precision)
                {
                    numberBuilder.Append(System.Guid.NewGuid().ToString().Replace("-", ""));
                }

                newNumber = numberBuilder.ToString();
                if (newNumber.Length > Precision)
                {
                    newNumber = newNumber.Substring(0, Precision);
                }

                numberString.Append("Number ");
                numberString.Append((loop + 1).ToString());
                numberString.Append(": ");
                numberString.Append(newNumber);

                if ((loop+1) < Count) { numberString.Append(", "); }
            }

            return numberString.ToString();
        }
0
 
LVL 1

Author Comment

by:run2004
ID: 17999589
This is a good one, but I just wanted to know how good it is to use the random class to generate the random numbers. There is one more observation, the output doesn't contain upper case letters. Is there a way to have both in one place.

Thanks for the fast response.
0
 
LVL 11

Assisted Solution

by:Expert1701
Expert1701 earned 150 total points
ID: 18001422
Here is a sample of output,

  T9bhygXK
  by1Gl7aW
  bnhMe6iZ

produced by this program:

  static Random random = new Random();

  static void Main()
  {
    foreach (string result in GenerateRandoms(3, 8))
      Console.WriteLine(result);

    Console.ReadLine();
  }

  static string[] GenerateRandoms(int number, int precision)
  {
    string[] list = new string[number];
   
    for (int i = 0; i < number; i++)
      list[i] = GenerateRandom(precision);
   
    return list;
  }

  static string GenerateRandom(int precision)
  {
    char[] list = new char[precision];

    for (int i = 0; i < precision; i++)
    {
      int next = random.Next() % 62;
      if (next < 10)
        list[i] = (char)('0' + next);
      else if (next < 36)
        list[i] = (char)('A' + next - 10);
      else
        list[i] = (char)('a' + next - 36);
    }

    return new string(list);
  }
0
 
LVL 11

Expert Comment

by:Expert1701
ID: 18017562
run2004, did the sample application I posted meet your requirements?
0

Featured Post

Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
What is "public object" in C#? 3 48
Install Problem 13 32
How can my static class become undefined?? 8 50
How to call weather service by using asmx? 4 32
Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question