Color [] a=new Color[20];
Random bb=new Random(123);for(int i=0;i<a.Length;i++)
a[i]=Color.FromArgb(bb.Next(255),bb.Next(255),bb.Next(255));

解决方案 »

  1.   

    siao兄:
    你的算法,非常不错!
    但是,你如何保证不会出现重复的颜色呢?
      

  2.   

    还要验证一下重不重!
    遍历一遍前面的color,发现没有相重
    while(1)
    {
    for(int j=0;j<i;j++)
    {
    if(a[i]和a[j]相等)break;
    }
    if(j==i)//说明没有相等
    break;
    else a[i]=Color.FromArgb(bb.Next(255),bb.Next(255),bb.Next(255));
    }
      

  3.   

    20次的同一种子的next 重复率是非常低的,你可以自己再加一次判断
      

  4.   

    没错~~~不过算法归算法~~~
    有没有考虑这个问题~~~ RGB数值有些差别~~但是实际上人的眼睛看起来颜色是一样的~~~
    如果要求人的眼睛能分辨出的20种不同颜色怎么处理呢?
    我觉得可能要先分段,然后随机取值
      

  5.   

    把Next(255)改成Next(25)*10,就可以区分乐~~
      

  6.   

    有点小道理!呵呵,
    http://mubbs.vicp.net/opticall/images/CIE.jpg
    http://mubbs.vicp.net/opticall/images/CIE1jpg