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这个数组里面的数字全部重新随机排列,接下去你想要多少个就把前多少位取出来就可以了(不会重复)
}
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这个数组里面的数字全部重新随机排列,接下去你想要多少个就把前多少位取出来就可以了(不会重复)
}
int i=rnd.Next(0,18);
取四次就行了,但可能有重复的
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],就是要的四个数,这样性能会高一些
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次就可以了
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个数