x
Solved

# Generating the random numbers using C#

Posted on 2006-11-22
Medium Priority
197 Views
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
Question by:run2004
• 2
• 2

LVL 23

Expert Comment

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

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

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

Expert1701 earned 600 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);

}

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

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

## Featured Post

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.