我在尝试生成随机数时需要帮助,因为我的编码在下面显示了两个文本框中的相同数字。
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.
}
答案 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对象。每次需要新的随机数时创建一个新的将导致种子相同(给定创建之间的时间间隔)