生成随机数并插入到文本字段中

时间:2016-07-30 19:12:48

标签: c# asp.net

我的目标是生成随机数并插入4个不同的文本域。

我的代码背后

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;
}

但它会在4个文本字段中生成4个相同的数字。

enter image description here

我想在不同的文本字段中使用不同的数字而不重复。

2 个答案:

答案 0 :(得分:1)

你必须把rand放在方法之外,这样你每次调用方法时都不会创建一个新的。一种方法是将它作为类的属性。

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;
}

另一种是将其作为参数传递

private int GenerateNumber(Random rand)
{
    int i = 0;
    i = rand.Next(0, 100);
    return i;
}

说实话,我不知道为什么你有一个已经有方法的方法。

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();
}

答案 1 :(得分:0)

有几种方法可以生成不同的数字来保持代码的完整性。比如,例如:

在方法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;
}

或者,@ Dmitry Bychenko被告知在Random方法之外创建GenerateNumber()类的静态对象:

private static Random rand = new Random();
private int GenerateNumber()
{
    int i = 0;
    i = rand.Next(0, 100);
    return i;            
}