生成一个可以在任何地方访问的随机数
本文关键字:方访问 任何地 访问 随机数 一个 | 更新日期: 2023-09-27 17:50:11
这是我的代码的开头:
public partial class Form1 : Form
{
static Random random = new Random();
int prevnum;
int currentnum;
public int GenerateRandomNumber()
{
return random.Next(1, 1000);
}
public Form1()
{
int randomNumber = random.Next(1, 1000);
InitializeComponent();
}
private void enterButton_Click(object sender, EventArgs e)
{
currentnum = Convert.ToInt32(guessBox.Text);
if (randomNumber < currentnum)
{
warmOrColdLabel.Text = "Too High";
if (currentnum > prevnum)
{
guessBox.BackColor = Color.Blue;
prevnum = currentnum;
}
else
{
guessBox.BackColor = Color.Red;
prevnum = currentnum;
}
}
if (randomNumber > currentnum)
{
warmOrColdLabel.Text = "Too Low";
if (currentnum > prevnum)
{
guessBox.BackColor = Color.Blue;
prevnum = currentnum;
}
else
{
guessBox.BackColor = Color.Red;
prevnum = currentnum;
}
}
if (randomNumber == currentnum)
{
guessBox.Enabled = false;
enterButton.Enabled = false;
playAgainButton.Enabled = true;
}
}
private void playAgainButton_Click(object sender, EventArgs e)
{
enterButton.Enabled = true;
guessBox.Enabled = true;
playAgainButton.Enabled = false;
}
}
我的问题是得到一个随机数,它总是输出0。我只需要一个随机数,我可以把不同的按钮等。我做错了什么?
编辑:必须是1到1000之间的随机数。
您实际上没有在任何地方调用RandomNumberHandler()
。此外,您需要在调用.Next()
时指定您的范围(例如,random.Next(1000)+1
以获得从1到1000的数字)。
public partial class Form1 : Form
{
//other stuff from before
int randomNumber; //move this here
public Form1()
{
randomNumber = random.Next(1, 1000); //assign it here
InitializeComponent();
}
主要问题是randomNumber在构造函数被调用时被初始化,之后当你访问它时,你访问的是相同的值。
您应该消除该实例变量,而只是简单地重新调用generaterrandom()。
此外,您可能希望将Random实例设置为静态变量:
static Random random =
否则每次卸载和重新加载类时,它将重复相同的序列,这将减少随机性(或者更确切地说,伪随机)。