[問題] 如何讓timer+imagelist隨機圖不重複?

作者: windmax1 (I do my best)   2014-04-14 18:19:06
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研究半天研究不出個所以
拜託高手指點一下方向!!
作者: ssccg (23)   2014-04-14 20:04:00
1 建一個所有可能值的list,隨機shuffle後依序取2 記錄已經用過的值,如果新隨機出來的一樣就重隨機一次
作者: Harper34 (強打少年)   2014-04-15 00:13:00
3 做一個hashtable key是亂數 value對應號碼 key排序後去查hashtable對應的值 就是shuffle過的號碼
作者: windmax1 (I do my best)   2014-04-15 15:11:00
感謝兩位大大!!
作者: Harper34 (強打少年)   2014-04-15 15:50:00
http://stackoverflow.com/a/4262134 這寫法更簡潔http://sharetext.org/aNaw 類似這樣shuffledList.ElementAt(i)如果錯誤無法自行解決 建議你先多上MSDN看看範例
作者: windmax1 (I do my best)   2014-04-17 09:20:00
好的,感謝您換成imageList1.Images[i]過不了,研究好久還是不知道為何 冏 真的很抱歉

Links booklink

Contact Us: admin [ a t ] ucptt.com