Random rnd=new Random();
int[] arrNum={0,1,2,3..........18};
for(int i=0;i<18;i++)
{
   int rndNum=rnd.Next(i,18);
   int temp=arrNum[i];
   arrNum[i]=arrNum[rndNum];
   arr[rndNum]=temp;
//这些代码是把arrNum这个数组里面的数字全部重新随机排列,接下去你想要多少个就把前多少位取出来就可以了(不会重复)
}

解决方案 »

  1.   

    Random rnd=new Random(); 
    int i=rnd.Next(0,18);
    取四次就行了,但可能有重复的
      

  2.   

    1楼的方法,那个数组arrNum比较时乍样办呢?比如说上万个呢?
      

  3.   


    Random rand =new Random();int [] number={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};
    //打乱数组里元素的顺序,然后取前面四个for(int i=0;i<number.Length/2;i++)
    {
       int index=rand.next(1,19);
       int temp=   number[i];
       number[i]=number[index];
       number[index]=temp;
    }//
    number[0],number[1],number[2],number[3],就是要的四个数,这样性能会高一些
      

  4.   

                Random rand = new Random();            int[] number ={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
                int numberLength = number.Length - 1;
                
                for (int i = 0; i < 4; i++)
                {
                    int index = rand.Next(0, numberLength - i);
                    int temp = number[numberLength - i];
                    Console.WriteLine(number[index]);
                    number[numberLength - i] = number[index];
                    number[index] = temp;            }
    不知道这样好不好。
    没次取得一次随机数后,就将该数与最后一个数交换位置。然后,在下次取随机数时,将rand.Next(0, numberLength - i);中的最大值减1。这样只需要循环4次就可以了
      

  5.   

    用List装入你需要取的随机范围,随机取一个足够大的数,后除已你要的范围取余数,再后在数组中弹出排列在余数位的那个,这样就取到第一个随机数。再重复以上过程,但范围数要减一,直到你取够
      

  6.   

    Random rand = new Random(); 
                ArrayList ar = new ArrayList();
                for (int i = 1; i < 19; i++)
                {
                    ar.Add(i);
                }
                int[] temp = { 0,0,0,0 };
                for (int i = 1; i < 5; i++)
                {
                    int index = rand.Next(18-i);
                    temp[i - 1] = Convert.ToInt32(ar[index]);
                    ar.RemoveAt(index);
                }我这个是可以的,不过不知道性能怎么样temp数组就是要的4个数