[问题] 如何让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