使用随机数填充动态创建的控件

本文关键字:创建 控件 动态 填充 随机数 | 更新日期: 2023-09-27 18:00:58

好。几天前,我问了一个问题,如何在不使用数组的情况下生成100、1000、10.000等随机数,我的问题被删除了,因为答案可能不那么明显。我用简单的解决方案解决了这个问题,但现在我遇到了另一个问题。我在这里尝试的是用不同的随机数填充每个动态创建的标签。我不知道为什么每10行总是得到相同的数字。下面是我试图找到工作的代码:

protected void btnExample1Random_Click(object sender, EventArgs e)
{
    //Making the controls visible
    this.Master.FindControl("Div1").Visible = true;        
    //Generating the random numbers
    for (int i = 0; i < 10; i++)
    {
        Label randomTask = new Label();
        Label emptyTask = new Label();
        TextBox userInputTextBox = new TextBox();
        Random rnd = new Random();
        int caseInt = rnd.Next(1, 4), myNum = 0;
        switch (caseInt)
        {
            case 1:
                caseInt = 100;
                myNum = rnd.Next(1, 100);
                break;
            case 2:
                caseInt = 1000;
                myNum = rnd.Next(1, 1000);
                break;
            case 3:
                caseInt = 10000;
                myNum = rnd.Next(1, 10000);
                break;
        }
        //Forming the controls
        randomTask.ID = "lbl" + i.ToString();
        randomTask.Text = caseInt.ToString() + " - " + myNum.ToString() + " ";
        userInputTextBox.ID = "box" + i.ToString();
        emptyTask.ID = "check" + i.ToString();
        //Adding the controls into the placeholder
        phTutorijal1.Controls.Add(randomTask);
        phTutorijal1.Controls.Add(userInputTextBox);
        phTutorijal1.Controls.Add(emptyTask);
        phTutorijal1.Controls.Add(new LiteralControl("<br />"));
    }
    //Separating the next created controls into new line
    phTutorijal1.Controls.Add(new LiteralControl("<br />"));
}

这段代码中有一个错误,我找不到。占位符中生成的每10行都有相同的数字。我错过了什么?

更新:Michael Liu发现了我的错误所在:我需要将Random rnd = new Random();放在for cycle 之外

使用随机数填充动态创建的控件

由于在循环中创建了随机实例,所以得到的数字相同。因此,它将使用从时间派生的相同种子进行初始化。你只需要在循环之外声明它:

Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
    int caseInt = rnd.Next(1, 4), myNum = 0;

MSDN:

随机数的生成从种子值开始。如果相同重复使用种子,生成相同的数字序列。。。