需要生成不同的随机数

时间:2014-09-17 21:52:56

标签: c#

我在尝试生成随机数时需要帮助,因为我的编码在下面显示了两个文本框中的相同数字。

   private int RandomNumber(int min, int max)
{

    Random random = new Random();
    random.Next();
    return random.Next(1, 7); // random integer and assigned to number  
} 


private void button1_Click(object sender, EventArgs e)
{


    tb1.Text = RandomNumber(1, 7).ToString(); // Random Number for Text Box 1.
    tb2.Text = RandomNumber(7, 1).ToString(); // Random Number for Text Box 2.

}

3 个答案:

答案 0 :(得分:3)

Random根据当前时间选择种子 如果您同时创建两个Random,它们将为您提供相同的数字。

相反,您需要创建一个Random实例并将其存储在班级的字段中。

但是,请注意Random不是线程安全的。

答案 1 :(得分:1)

您只需要将Random课程实例化一次。 From MSDN,文档说明:

  

如果将相同的种子用于单独的随机对象,它们将生成相同的随机数序列。

在你的情况下,正如SLaKs所说,种子是当前时间。你把这些函数调得很近,他们使用相同的种子。如果将实例化移到函数外部,则有一个基于一个种子的实例,而不是基于同一种子的多个对象。

Random random = new Random();

private int RandomNumber(int min, int max)
{
    return random.Next(1, 7); // random integer and assigned to number  
} 

答案 2 :(得分:0)

您需要在函数外部创建Random对象。每次需要新的随机数时创建一个新的将导致种子相同(给定创建之间的时间间隔)