上面错了,这才是我的问题//获得第一个随机整形数组
  Random mRandom1=new Random();
  ArrayList a1=new ArrayList();
  int a=0;
  while(a1.Count<5)
    {
a=mRandom1.Next(1,50);
if(!a1.Contains(a))
          {
    a1.Add(a);
 }
    }
//获得第二个随机整形数组
  Random mRandom2=new Random();
  ArrayList a2=new ArrayList();
  int b=0;
  while(a2.Count<5)
    {
b=mRandom2.Next(1,50);
         if (!a2.Contains(b))
         {
//通过此方式避免a2数组和a1中的数值产生重复
           for (int i=0;i<5;i++)
    {
      if(Convert.ToString(b)!=a1[i].ToString())
          {
     a2.Add(b);
 }
    }
         //通过此方式避免a2数组和a1中的数值产生重复
         }
    }
为什么第二个数组会是随机的几个重复数字?
我用Console.Write分别显示了这两个数组。
我头都快爆了。

解决方案 »

  1.   

    不要用mRandom2了。
    直接用mRandom即可。
    mRandom.Next
      

  2.   

    try
    Random mRandom1=new Random();
    ArrayList a1=new ArrayList();
    int a=0;
    while(a1.Count<5)
    {
    a=mRandom1.Next(1,50);
    if(!a1.Contains(a))
    {
    a1.Add(a);
    Console.WriteLine(a);
    }
    }
    //获得第二个随机整形数组
    Random mRandom2=new Random();
    ArrayList a2=new ArrayList();
    int b=0;
    while(a2.Count<5)
    {
    b=mRandom2.Next(1,50); if(!a2.Contains(b) && !a1.Contains(b))
    {
    a2.Add(b);
    Console.WriteLine(b);
    }
      
    }
      

  3.   

    楼主的做法太繁琐了
    错误出在这个地方
    if (!a2.Contains(b))
    {
    //通过此方式避免a2数组和a1中的数值产生重复
    for (int i=0;i<5;i++)
    {
    if(Convert.ToString(b)!=a1[i].ToString())
    {
    a2.Add(b);
    Console.WriteLine(b);
    }
    }
    //通过此方式避免a2数组和a1中的数值产生重复
    }
      

  4.   

    当条件if (!a2.Contains(b))满足
    之后
    你的程序进入循环
    for (int i=0;i<5;i++)
    当满足if(Convert.ToString(b)!=a1[i].ToString())
    条件之后,就加入了a2
    而条件if(Convert.ToString(b)!=a1[i].ToString())是一定会出现满足的情况的
    所以就循环了5次加入了a2
    不重复才怪
    --PS:cpu没有问题
      

  5.   

    public static void Main(string[] args)
    {
    ArrayList ar1 = new ArrayList();
    ArrayList ar2 = new ArrayList();
    int l = 50;
    System.Random r = new Random();
    while(true)
    {
    int iNumber = r.Next(100);
    //Console.WriteLine(iNumber);
    if(ar1.Contains(iNumber))
    continue;
    if(ar1.Count<l)
    ar1.Add(iNumber);
    iNumber = r.Next(100);
    if(ar1.Contains(iNumber) || ar2.Contains(iNumber))
    continue;
    if(ar2.Count<l)
    ar2.Add(iNumber);
    if(ar1.Count==l && ar2.Count==l)
    break;
    }
    for(int i=0;i<ar1.Count;i++)
    Console.WriteLine("ar1[{0}]\t=\t{1}",i,ar1[i]);
    Console.WriteLine();
    for(int i=0;i<ar2.Count;i++)
    Console.WriteLine("ar2[{0}]\t=\t{1}",i,ar2[i]);
    }