c# - 为什么for语句中的随机方法返回相同的结果?

标签 c# .net random

<分区>

Possible Duplicate:
Random number generator not working the way I had planned (C#)

我有一个返回 9 位数字字符串数字的方法,如果我调用这个方法它会像我预期的那样正常工作,但当我在循环语句中调用它时却不行,因为它只生成一个数字并重复它。

代码如下:

private string GenerateRandomNumber()
        {
            Random r = new Random();
            return r.Next(111111111, 999999999).ToString();
        }
        protected void btnSolo_Click(object sender, EventArgs e)
        {
            Response.Write(GenerateRandomNumber());
            // Every time I call this method , it return 9 digit random number wich is different with the previous call like : 146956595  
        }
        protected void btnBulk_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                string randomNumber = GenerateRandomNumber();
                Response.Write("<br /> " + randomNumber);
                //It  create just one 9 digit number 100 times !
            }
        }

最佳答案

使 Random r = new Random(); 在类级别完成,并将 r 保存为类变量。对 Next 的后续调用不会生成相同的“随机”值。

private static Random r = new Random();

private string GenerateRandomNumber()
{
    return r.Next(111111111, 999999999).ToString();
}

protected void btnSolo_Click(object sender, EventArgs e)
{
    Response.Write(GenerateRandomNumber());
}

protected void btnBulk_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 100; i++)
    {
        string randomNumber = GenerateRandomNumber();
        Response.Write("<br /> " + randomNumber);
    }
}

关于c# - 为什么for语句中的随机方法返回相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890518/

相关文章:

random - 将 arc4random() 的结果转换为 Int 时崩溃

java - 数组中的数组,100 行,动态列

C# XAML : UI not update after change an instance of ObservableCollection

c# - 如何使用 LINQ 解析 OWL 文件(包含 RDF namespace )

c# - 如何枚举 PropertyGrid 项?

.net - 在 .Net 中选择打印机

c# - 将项目集合从列表框转换为通用列表

c# - 如何在 C# 中复制非托管数据,速度有多快?

c# - 使用 Linq 从集合中获取对象

java - 始终在范围内取不同的随机元素