[英]Random numbers in C#
當我嘗試運行該應用程序時,出現以下錯誤,我確定它很簡單,但是我看不到它。 當我單擊標記為“播放”的按鈕時,我要嘗試執行的操作。 我想調用一個名為randomnumber的方法。 然后,我希望結果顯示在lblPickFive_1中。 我有2x2,Pick5和強力球。 每個隨機數都將顯示在我創建的自己的標簽中。
現在,我只是想超越生成一個隨機數並將其顯示在一個標簽中的那個,然后我將繼續介紹其余的內容。 如果我無法弄清其余問題,我敢肯定還會發布更多問題。
錯誤1方法'RandomNumber'的重載沒有接受'0'參數
using System;
using System.Windows.Forms;
namespace LotteryTickets
{
public partial class Form1 : Form
{
/// <summary>
/// no-args Constructor
/// </summary>
public Form1()
{
InitializeComponent();
}
#region "== Control Event Handlers =="
private void Form1_Load(object sender, EventArgs e)
{
ClearWinningNumbers();
}
#endregion "== End Control Event Handlers =="
#region "== Methods ==";
/// <summary>
/// Clears the text inside the winning number "balls"
/// </summary>
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();
}
}
}
首先,您不應該在每次想要一個新的隨機數時都更新一個隨機數生成器。 您應該將生成器設置為靜態或成員變量,並為每個新數字引用它。
其次,您必須將一個最小值和一個最大值傳遞給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
實例。 碰巧的是,在這種特殊情況下,它不太可能引起問題,因為它是由用戶操作觸發的,但是您應該閱讀我有關隨機數的文章,以了解問題所在以及如何避免它。
您需要傳遞值:
private void btnPlay_Click(object sender, EventArgs e)
{
RandomNumber();
}
應該:
private void btnPlay_Click(object sender, EventArgs e)
{
RandomNumber(0, 50000);
}
您的RandomNumber
方法采用兩個參數。
如果要調用該方法,則需要傳遞兩個參數。
您正在調用RandomNumber();
在btnPlay_Click
但RandomNumber
方法需要min
和max
。
設置一個Random
對象,並將其初始化一次。
class Form1
{
...
Random rnd = new Random();
}
然后在每次需要時使用它
void RandomNumber(int min, int max)
{
int num = rnd.Next(min, max);
...
}
每次調用new()都會發生什么情況,它將重新設置隨機數,最終您可能會一遍又一遍地得到相同的數字。 我曾經發生過這種事,它殺死了我
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.