code.club

 找回密碼
 立即註冊
搜索
查看: 5313|回復: 0
打印 上一主題 下一主題

隨機安插陣列之圖片

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2021-1-26 16:01:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 2266 於 2021-1-26 16:09 編輯

先做一個檢查數字是否已經出現過的函式。
bool isNumberNotExisted(int r, int[] a)//r是要被檢查的數字,a是數字陣列
        {
            for (int i = 0; i < a.Length; i++)
                if (r == a) //依序比對a陣列中已有的數字,看是否已經有r這個數字存在?
                    return false; //有的話,就回報 false
            return true;//沒有的話就回報 true
        }

再做一個隨機選擇但數字不重覆的函式。
void numberRandomPicks(int[] b,int n) //b是要產出的一個數字陣列,裡面要有n個不重覆的元素
        {
            int i = 0;
            while(i<n)//當元素個數不到n時就一直做下去
            {
                int x = rnd.Next(0, n);//從某範圍內隨機產出一個數字x
                if (isNumberNotExisted(x, b)) //檢查x是否已存在於b陣列中
                {
                    b = x; //如果結果true表示尚不存在,就將x放至b陣列中
                    i++;//繼續下一個元素
                }//如果得到false就什麼也不做,i也不增加,回到原點再做一次流程,直至元素有n個為止
            }
        }



最後做一個可隨機安插圖片的函式。
void picManage(PictureBox[] X, PictureBox[] Y, int[] Z) //X是要產生隨機圖片的陣列,Y是提供圖片的陣列,Z是已有隨機數字排列的數字陣列
        {
            numberRandomPicks(randomNow, picNumber); //randomNow是上面中的b數字陣列,picNumber是上面中的n個元素,先製造出隨機且不重覆的randomNow陣列
            for (int i = 0; i < picNumber; i++) //然後將提供圖片的Y陣列的註標依Z陣列的數字逐一放到X圖片陣列中,完成隨機次序排列的圖片陣列
                X.Image = Y[Z].Image;
        }
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-23 20:15 , Processed in 0.093753 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表