需要生成不同的随机数

本文关键字:随机数 | 更新日期: 2023-09-27 18:22:19

我需要帮助来生成一个随机数,因为下面的代码在两个文本框中都显示了相同的数字。

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

需要生成不同的随机数

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

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

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

您只需要实例化Random类一次。MSDN中的文档指出:

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

在您的情况下,正如SLaKs所说,种子是当前时间。您调用的函数非常接近,它们使用的是相同的种子。如果将实例化移到函数之外,则会有一个基于一个种子的实例,而不是基于同一种子的多个对象。

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

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