2014年12月4日 星期四

物件矩陣與不重複亂數 方法一

public partial class Form1 : Form
    {
        string c;
        int[] a = new int[10];
        Button[,] b = new Button[5, 5];
        int[,] w=new int[5,5];
        Random r1 = new Random();
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
         
            for (int j = 0; j < 5; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    b[i, j] = new System.Windows.Forms.Button();
                    b[i, j].Location = new Point(50 * i, 50 * j);
                    b[i, j].Click += new EventHandler(b_Click);
                    b[i, j].Width = 50;
                    b[i, j].Height = 50;
                    b[i, j].Text = "" + (i + j * 5);
                    w[i, j] = i + j * 5;//w[i,j]可以用來紀錄b[i,j]有關的數值
                    this.Controls.Add(b[i, j]);
                 
                }
            }
            for (int j = 0; j < 25; j++)
            {
                for (int i = 0; i < j; i++)
                {
                    a[0] = r1.Next(0, j);//a[0]從0到j
                    a[1] = a[0] % 5;//a[1],a[2]從0到4
                    a[2] = (a[0] - a[1]) / 5;
                    c = b[a[1], a[2]].Text;
                    b[a[1], a[2]].Text = b[i % 5, i / 5].Text;
                    b[i % 5, i / 5].Text = c;//被隨機到的按鈕與第i個交換名稱

                }
            }
        }
    }
//對於1,2,..,n的數列,被分為未打亂與已打亂,每次從未打亂的數列中隨機挑一個數到已打亂數列裡面,n次之後就會得到隨機不重複數列