如何填充每个索引中具有唯一编号的int数组?

Mar*_*gat 1 c# arrays random if-statement

我正在创建一个宾果游戏,我正在使用数组Random生成随机数,int但我的问题是有时在索引中再次使用一个数字.如何使索引中的数字唯一?

这是我的工作:

namespace Bingo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    Random randNum1 = new Random();

    int[] random1 = new int[5];
    int qwe = 0;
    int i = 0;

    private void button1_Click(object sender, EventArgs e)
    {
        Class1 class1 = new Class1();
        class1.checker(this);

        if (label1.Text == label2.Text || label3.Text == label4.Text) {

            label2.Text = randNum1.Next(1, 15).ToString();
            label4.Text = randNum1.Next(1, 15).ToString();
        }

        if (label5.Text == label1.Text || label5.Text == label2.Text) {

            label5.Text = randNum1.Next(1, 15).ToString();            
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Class1 class1 = new Class1();

        class1.SetTwo(this);

        for (int i = 0; i < random1.Length; i++)
        {
            random1[i] = randNum1.Next(1, 15);

            label1.Text = random1[0].ToString();
            label2.Text = random1[1].ToString();
            label3.Text = random1[2].ToString();
            label4.Text = random1[3].ToString();
            label5.Text = random1[4].ToString();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sco*_*ica 7

循环直到找到未使用的问题是随着游戏的进行,你需要花费更长的时间才能找到有效的数字.从理论上讲,你的循环永远不会结束(极有可能,但仍然......)

最简单的事情是在真正的宾果游戏中发生的事情.从有限的集合开始,实际上每次绘制时都从集合中删除项目.使用初始可能性填充List或任何其他动态索引容器,随机选择从0到列表大小的索引,然后从列表中删除选择.

这将保证每个选择产生唯一的结果,没有循环.