看板 C_Sharp 關於我們 聯絡資訊
private void timer1_Tick(object sender, EventArgs e) { intSpinCount++; if (intSpinCount <= 20) { // 轉動中; Random rnd = new Random(); int intIndex = rnd.Next(imageList1.Images.Count); //0到imageList1.Images.Count隨機取一; 2~6省略 pictureBox1.Image = imageList1.Images[intIndex]; 2~6省略 } else { // 停止; //隨機取值; Random rnd = new Random(); int myIndex = rnd.Next(imageList1.Images.Count); //0到imageList1.Images.Count隨機取一; 2~6省略 pictureBox1.Image = imageList1.Images[myIndex]; timer1.Enabled = false; ifSpin = false; btnAnimateImage.Enabled = true; btnAnimateImage.Text = "動態切換圖片"; } 產生結果如圖http://imgur.com/2AakeZL 想要讓六個號碼彼此之間不重複,GOOGLE研究半天研究不出個所以 拜託高手指點一下方向!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.11.129.171 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1397470749.A.5ED.html ※ 編輯: windmax1 (124.11.129.171), 04/14/2014 18:23:42
ssccg:1 建一個所有可能值的list,隨機shuffle後依序取 04/14 20:04
ssccg:2 記錄已經用過的值,如果新隨機出來的一樣就重隨機一次 04/14 20:04
Harper34:3 做一個hashtable key是亂數 value對應號碼 key排序後 04/15 00:13
Harper34:去查hashtable對應的值 就是shuffle過的號碼 04/15 00:14
windmax1:感謝兩位大大!! 04/15 15:11
Harper34:http://stackoverflow.com/a/4262134 這寫法更簡潔 04/15 15:50
不好意思,小弟是新手,所以遇到問題比較多 請教Ha大 我照你的連結最上面的程式,試著修改後將它套進我的程式碼 放在timer.Tick底下 int n = imageList1.Images.Count; while (n > 1) { n--; int k = rnd.Next(n + 1); T value = imageList1.Images[k]; imageList1.Images[k] = imageList1.Images[n]; imageList1.Images[n] = value; } 遇到一個問題,就是T value一定要在Shuffle<T>底下才會過 可是如果把上面這段放在Shuffle<T>底下imageList1.Images就無法過 我現在不知道怎麼做結合 冏 ※ 編輯: windmax1 (124.11.129.171), 04/15/2014 18:33:31
Harper34:http://sharetext.org/aNaw 類似這樣 04/16 17:19
再請教H大 我修改後試著放入,可是 shuffledList[i]這段會顯示↓↓ 錯誤 1 無法套用有 [] 的索引至類型 'System.Linq.IOrderedEnumerable<System.Windows.Forms.ImageList>' 的運算式 ※ 編輯: windmax1 (124.11.129.171), 04/16/2014 18:01:45
Harper34:shuffledList.ElementAt(i) 04/16 23:23
Harper34:如果錯誤無法自行解決 建議你先多上MSDN看看範例 04/16 23:29
windmax1:好的,感謝您 04/17 09:20
windmax1:換成imageList1.Images[i]過不了,研究好久還是不知道為 04/17 17:43
windmax1:何 冏 真的很抱歉 04/17 17:44