简体   繁体   中英

Generate random numbers and insert into textfield

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM