簡體   English   中英

C#中的隨機數

[英]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有兩個參數minmax 您尚未在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_ClickRandomNumber方法需要minmax

設置一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM