My objective is to generate random numbers and insert into 4 different textfields.
My Code Behind
protected void Generate_Click(object sender, EventArgs e)
{
TextBox1.Text = GenerateNumber().ToString();
TextBox2.Text = GenerateNumber().ToString();
TextBox3.Text = GenerateNumber().ToString();
TextBox4.Text = GenerateNumber().ToString();
}
private int GenerateNumber()
{
int i = 0;
Random rand = new Random();
i = rand.Next(0, 100);
return i;
}
But it then generates 4 same numbers in 4 textfields.
I want to have different numbers in different textfields without repeating.
You have to put the rand out of the methods,so you won't create a new one every time you call your method.One way is to have it as a property on the class.
Random rand = new Random();
protected void Generate_Click(object sender, EventArgs e)
{
TextBox1.Text = GenerateNumber().ToString();
TextBox2.Text = GenerateNumber().ToString();
TextBox3.Text = GenerateNumber().ToString();
TextBox4.Text = GenerateNumber().ToString();
}
private int GenerateNumber()
{
int i = 0;
i = rand.Next(0, 100);
return i;
}
The other is to pass it as a parameter
private int GenerateNumber(Random rand)
{
int i = 0;
i = rand.Next(0, 100);
return i;
}
And to be honest I don't know why you have a method for something that already has a method.
protected void Generate_Click(object sender, EventArgs e)
{
Random rand = new Random();
TextBox1.Text = rand.Next(0, 100).ToString();
TextBox2.Text = rand.Next(0, 100).ToString();
TextBox3.Text = rand.Next(0, 100).ToString();
TextBox4.Text = rand.Next(0, 100).ToString();
}
There are a few ways in which you can generate different numbers keeping your code intact. Like, for example:
Passing an extra parameter in your method GenerateNumber()
,
protected void Generate_Click(object sender, EventArgs e)
{
TextBox1.Text = GenerateNumber(36).ToString();
TextBox2.Text = GenerateNumber(21).ToString();
TextBox3.Text = GenerateNumber(77).ToString();
TextBox4.Text = GenerateNumber(9).ToString();
}
private int GenerateNumber(int a)
{
int i = 0;
Random rand = new Random();
i = rand.Next(a, 100);
return i;
}
or, as @ Dmitry Bychenko told to create a static object of the Random
class outside the GenerateNumber()
method:
private static Random rand = new Random();
private int GenerateNumber()
{
int i = 0;
i = rand.Next(0, 100);
return i;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.