C#中的随机数
当我尝试运行应用程序时,我得到以下错误我确信它很简单,但我没有看到它。 当我点击标记为Play的按钮时,我正在尝试这样做。 我想调用一个名为randomnumber的方法。 然后我希望结果显示在lblPickFive_1中。 我有2×2,Pick5和powershell球。 每个随机数将显示在我创建的自己的标签中。
现在我只是想通过生成随机数并将其显示在一个标签中然后我将移动到其余部分。 如果我无法弄清楚剩下的问题,我肯定会发布更多问题。
错误1方法’RandomNumber’的重载没有’0’参数
using System; using System.Windows.Forms; namespace LotteryTickets { public partial class Form1 : Form { /// /// no-args Constructor /// public Form1() { InitializeComponent(); } #region "== Control Event Handlers ==" private void Form1_Load(object sender, EventArgs e) { ClearWinningNumbers(); } #endregion "== End Control Event Handlers ==" #region "== Methods =="; /// /// Clears the text inside the winning number "balls" /// private void ClearWinningNumbers() { this.lblPickFive_1.Text = ""; this.lblPickFive_2.Text = ""; this.lblPickFive_3.Text = ""; this.lblPickFive_4.Text = ""; this.lblPickFive_5.Text = ""; this.lblTwoByTwo_1.Text = ""; this.lblTwoByTwo_2.Text = ""; this.lblPowerball_1.Text = ""; this.lblPowerball_2.Text = ""; this.lblPowerball_3.Text = ""; this.lblPowerball_4.Text = ""; this.lblPowerball_5.Text = ""; this.lblPowerball_PB.Text = ""; } #endregion "== End Methods =="; private void cblTwoByTwo_2_SelectedIndexChanged(object sender, EventArgs e) { } private void cblTwoByTwo_1_SelectedIndexChanged(object sender, EventArgs e) { } private void btnPlay_Click(object sender, EventArgs e) { RandomNumber(); } private void lblPickFive_1_Click(object sender, EventArgs e) { } private void RandomNumber(int min, int max) { int num = new Random().Next(min, max); lblPickFive_1.Text = num.ToString(); } } }
你需要传入值:
private void btnPlay_Click(object sender, EventArgs e) { RandomNumber(); }
应该:
private void btnPlay_Click(object sender, EventArgs e) { RandomNumber(0, 50000); }
首先,每次想要一个新的随机数时,都不应该新建一个随机数生成器。 您应该将生成器设置为静态或成员变量,并为每个新数字引用它。
其次,您必须将最小值和最大值传递给RandomNumber
方法。
好吧,你的代码与错误不符,但看看这个:
private void btnPlay_Click(object sender, EventArgs e) { RandomNumber(); } private void RandomNumber(int min, int max) { int num = new Random().Next(min, max); lblPickFive_1.Text = num.ToString(); }
RandomNumber
有两个参数, min
和max
。 您没有在btnPlay_Click
内的调用中指定任何btnPlay_Click
。 这就是编译器所抱怨的。 将呼叫更改为:
RandomNumber(5, 10);
即使修复了这个问题,也不应该每次都创建一个新的Random
实例。 碰巧的是,它不太可能在这种特殊情况下引起问题,因为它是由用户操作触发的,但你应该阅读我的随机数文章 ,看看问题是什么以及如何避免它。
RandomNumber
方法有两个参数。
如果要调用该方法,则需要传递两个参数。
你正在调用RandomNumber();
在btnPlay_Click
但是btnPlay_Click
方法需要min
和max
。
设置一个Random
对象并初始化一次。
class Form1 { ... Random rnd = new Random(); }
然后在每次需要时使用它
void RandomNumber(int min, int max) { int num = rnd.Next(min, max); ... }
每当你调用new()它会重新播种随机数时会发生什么,你可能会一遍又一遍地使用相同的数字。 我发生了这件事,它杀死了我