需要生成不同的随机数
本文关键字:随机数 | 更新日期: 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对象。每次需要新的随机数时创建一个新的种子将导致种子相同(给定创建之间的时间间隔)