Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止重复随机生成的数字_C#_Random_Numbers_Duplicates - Fatal编程技术网

C# 如何防止重复随机生成的数字

C# 如何防止重复随机生成的数字,c#,random,numbers,duplicates,C#,Random,Numbers,Duplicates,我已经将随机数放入数组中,但现在我想防止它在列表框中显示为双精度。我已经有了一个开始: private bool InArray(int getal, int[] getallen, int aantal) { } 我认为解决方案是,当数字已经在其中时,返回true,否则继续执行代码,但我想不出如何才能做到这一点 这是我的代码: namespace Trekking { public partial class Form1 : Form { private T

我已经将随机数放入数组中,但现在我想防止它在列表框中显示为双精度。我已经有了一个开始:

    private bool InArray(int getal, int[] getallen, int aantal)
    {

    }
我认为解决方案是,当数字已经在其中时,返回true,否则继续执行代码,但我想不出如何才能做到这一点

这是我的代码:

namespace Trekking
{
public partial class Form1 : Form
{
    private Trekking trekking;
    public Form1()
    {
        InitializeComponent();

        btnLaatZien.Enabled = false;
        btnSerie.Enabled = false;
        btnSorteer.Enabled = false;
        btnStart.Enabled = true;
        btnStop.Enabled = false;
        btnTrek.Enabled = false;

    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        int AantalGewenst = Convert.ToInt32(tbInvoerAantalGewenst.Text);
        int Maxwaarde = Convert.ToInt32(tbInvoerMaxwaarde.Text);
        trekking = new Trekking(Maxwaarde, AantalGewenst);
        btnTrek.Enabled = true;
        btnStop.Enabled = true;
        btnStart.Enabled = false;

        if (Maxwaarde > 90)
        {
            MessageBox.Show("Uw getal mag niet boven de 90 zijn!");
            btnStart.Enabled = true;
            btnTrek.Enabled = false;
            btnStop.Enabled = false;
        }
        else if (Maxwaarde < 0)
        {
            MessageBox.Show("Dit aantal is niet mogelijk!");
            btnStart.Enabled = true;
            btnTrek.Enabled = false;
            btnStop.Enabled = false;
        }
        else if (AantalGewenst > 45)
        {    
            MessageBox.Show("Uw getal mag niet boven de 45 zijn!");
            btnStart.Enabled = true;
            btnTrek.Enabled = false;
            btnStop.Enabled = false;
        }
        if (AantalGewenst < 1)
        {
            MessageBox.Show("Dit aantal is niet mogelijk!");
            btnStart.Enabled = true;
            btnTrek.Enabled = false;
            btnStop.Enabled = false;
        }
        else if (Maxwaarde / AantalGewenst < 2)
        {
            MessageBox.Show("Uw maxwaarde moet minstens het dubbele van Aantal Gewenst zijn!");
            btnStart.Enabled = true;
            btnTrek.Enabled = false;
            btnStop.Enabled = false;
        }
        else
        {
            if (AantalGewenst <= 45)
                btnStart.Enabled = false;
                btnTrek.Enabled = true;
                btnStop.Enabled = true;
        }
    }



    public void getSingleNumber(int hoeveel)
    {

        int Getal = trekking.GeefGetal(hoeveel);
        lbResultaat.Items.Add(Getal);
    }



    public void getTrekkingData()
    {
        for (int p = 0; p < trekking.AantalGewenst; p++)
        {
            int alleGetallen = trekking.GeefGetal(p);
            lbResultaat.Items.Add(alleGetallen);

        }

    }

    int count = 0;
    private void btnTrek_Click(object sender, EventArgs e)    
    {
        int gewenst = trekking.AantalGewenst;
        label3.Text = Convert.ToString(count);
        btnStop.Enabled = true;
        btnSerie.Enabled = false;
        trekking.TrekGetal();
        getSingleNumber(count);
        count++;
        if (count == trekking.AantalGewenst)
        {
            MessageBox.Show("Alle gewenste trekkingen zijn uitgevoerd");
            btnTrek.Enabled = false;
            btnStop.Enabled = true;
            btnSerie.Enabled = false;

        }

    }



    private void btnStop_Click(object sender, EventArgs e)
    {
        lbResultaat.Items.Clear();
        btnLaatZien.Enabled = false;
        btnSerie.Enabled = false;
        btnSorteer.Enabled = false;
        btnStart.Enabled = true;
        btnStop.Enabled = false;
        btnTrek.Enabled = false;
        tbInvoerAantalGewenst.Enabled = true;
        tbInvoerMaxwaarde.Enabled = true;
        count = 0;
    }

    private void tbInvoerMaxwaarde_KeyPress(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;
        e.Handled = !(Char.IsDigit(ch) || (ch == '-') || (ch < ' '));
    }

    private void k(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;
        e.Handled = !(Char.IsDigit(ch) || (ch == '-') || (ch < ' '));
    }
    private bool InArray(int getal, int[] getallen, int aantal)
    {

    }
}
名称空间漫游
{
公共部分类Form1:Form
{
私人徒步旅行;
公共表格1()
{
初始化组件();
btnLaatZien.Enabled=false;
btnSerie.Enabled=false;
bSenserteer.Enabled=false;
btnStart.Enabled=true;
btnStop.Enabled=false;
btnTrek.Enabled=false;
}
私有void btnStart_单击(对象发送方,事件参数e)
{
int AantalGewenst=Convert.ToInt32(tbinvoierantalgewenst.Text);
int Maxwaarde=Convert.ToInt32(tbinvotermaxwaarde.Text);
徒步旅行=新的徒步旅行(Maxwaarde,AantalGewenst);
btnTrek.Enabled=true;
btnStop.Enabled=true;
btnStart.Enabled=false;
如果(最大值>90)
{
MessageBox.Show(“Uw getal mag niet boven de 90 zijn!”);
btnStart.Enabled=true;
btnTrek.Enabled=false;
btnStop.Enabled=false;
}
否则如果(最大值<0)
{
Show(“Dit aantal是niet mogelijk!”);
btnStart.Enabled=true;
btnTrek.Enabled=false;
btnStop.Enabled=false;
}
如果(安塔尔格温斯特>45)
{    
MessageBox.Show(“Uw getal mag niet boven de 45 zijn!”);
btnStart.Enabled=true;
btnTrek.Enabled=false;
btnStop.Enabled=false;
}
如果(安塔尔格温斯特<1)
{
Show(“Dit aantal是niet mogelijk!”);
btnStart.Enabled=true;
btnTrek.Enabled=false;
btnStop.Enabled=false;
}
否则如果(Maxwaarde/AantalGewenst<2)
{
MessageBox.Show(“Uw maxwaarde moet minstens het Colle van Aantal Gewenst zijn!”);
btnStart.Enabled=true;
btnTrek.Enabled=false;
btnStop.Enabled=false;
}
其他的
{
如果(AantalGewenst我简化了你的问题(省略了最小值、最大值、最大值等)

基本上,您可以保留一份您已经遇到的事情的列表:

public class Lottery
{
    public HashSet<int> _previousNumbers = new HashSet<int>();
    private Random random = new Random();

    public int GetNextNumber()
    {
        int next;
        do
        {
            next = random.Next();
        }
        while (_previousNumbers.Contains(next));
        _previousNumbers.Add(next);
        return next;
    }

}
公共类彩票
{
public HashSet_previousNumbers=新HashSet();
私有随机=新随机();
public int GetNextNumber()
{
int-next;
做
{
next=random.next();
}
while(_previousNumbers.Contains(next));
_以前的数字。添加(下一步);
下一步返回;
}
}
集合不包含重复项,并且在其
包含的
实现中非常有效。

我简化了您的问题(省略了最小值、最大值、最大值等)

基本上,您可以保留一份您已经遇到的事情的列表:

public class Lottery
{
    public HashSet<int> _previousNumbers = new HashSet<int>();
    private Random random = new Random();

    public int GetNextNumber()
    {
        int next;
        do
        {
            next = random.Next();
        }
        while (_previousNumbers.Contains(next));
        _previousNumbers.Add(next);
        return next;
    }

}
公共类彩票
{
public HashSet_previousNumbers=新HashSet();
私有随机=新随机();
public int GetNextNumber()
{
int-next;
做
{
next=random.next();
}
while(_previousNumbers.Contains(next));
_以前的数字。添加(下一步);
下一步返回;
}
}

集合不包含重复项,并且在其
包含
实现中非常有效。

您应该使用哈希集而不是数组:感谢回复,但我必须使用数组您应该使用哈希集而不是数组:感谢回复,但我必须使用数组我感谢回复,但我必须为此程序使用数组Array也有contains,但您需要调整它的大小才能添加,这样,如果您愿意,可以用数组替换哈希集。很抱歉,我不太擅长c#,我不知道什么是contain。方法“Contains”返回一个布尔值,无论数组中是否存在某个项。您好,谢谢您的回复,但我必须为此程序使用数组array也有Contains,但您需要若要调整其大小以添加,则可以使用数组替换哈希集。抱歉,我不太擅长c#,我不知道contain是什么。方法“Contains”返回一个布尔值,以确定数组中是否存在特定项。