要求:不允许重复.我这么写的.觉得好傻
ArrayList list = new ArrayList();
int k = 0;
do
{
k =random .Next (1,51);
if (!list.Contains(k))
list.Add(k);
}
while (list.Count < 20);
ArrayList list = new ArrayList();
int k = 0;
do
{
k =random .Next (1,51);
if (!list.Contains(k))
list.Add(k);
}
while (list.Count < 20);
List<int> result=new List<int>();
Random rand=new Random();for(int i=1;i<51;i++){
numbers.Add(i);
}
while(numbers.Count>0){
int n=rand.Next(0,numbers.Count);
result.Add(n);
numbers.RemoveAt(n-1);//number.Remove(n);
}//大概这样吧,没测试~~~
he_8134(只有星星伴明月)的,你的是随机一个数,然后把它移出来,从里面随机是吧..
该这么写?
int n=rand.Next(0,numbers.Count);
result.Add(numbers[n]);
numbers.RemoveAt(n);
等我测试哈.
而却还要两个List,还不如楼主的啊楼主方法不傻啊
而却还要两个List,还不如楼主的啊楼主方法不傻啊
{
int []a=new int[50];
Random ra=new Random();
for(int i=0;i<50;i++)
{
int str=ra.Next(0,49);
if(a[str]==0)
{
a[str]=i;
}
else
{
i--;
}
}
for(int j=0;j<50;j++)
{
Console.WriteLine(a[j]);
}
}
楼主可以试下我的方法
{
List<int> listUniqueRandom = new List<int>();
Random rand = new Random();
while(true)
{
int nTemp = rand.Next(1, 51);
if (!listUniqueRandom.Contains(nTemp))
listUniqueRandom.Add(nTemp);
if (listUniqueRandom.Count == 20)
break;
}
return listUniqueRandom;
}
numbers.RemoveAt(n-1);//number.Remove(n);
----------
错的就是这一点点吧...
回复人:changkimkim()LZ的已经不错了,没觉得还有什么更好的方法
--------------
LZ的方法不算傻...应该说是很常规的...但是更好的方法还是有的...Random rnd = new Random();
byte[] keys = new byte[50];
rnd.NextBytes(keys);
int[] items = new int[50];
for (int i = 0; i < 50; i++)
{
items[i] = i + 1;
}
Array.Sort(keys, items);
int[] result = new int[20];
Array.Copy(items, result, 20);
return result;
请教一下啊,
1
rnd.NextBytes(keys);这个是不是用随即数把KEYS数组添满,那他啊里面会有重复的数吗?
2
Array.Sort(keys, items);他是怎么进行排序的,应该是根据KEYS里的元素进行排序吧,那KEYS里的元素要是重复了怎么办,这样能保证items里的前20个元素就是所要的元素吗??
keys Array 中的每个关键字在 itemsArray 中都有对应项。当关键字在排序过程中重新定位时,itemsArray 中的对应项也同样重新定位。因此,itemsArray 根据 keysArray 中对应关键字的排列进行排序。keys Array 中的每个关键字均必须实现 IComparable 接口,才能与其他任何关键字进行比较。如果排序不能成功地完成,则结果未定义。此方法使用 QuickSort 算法。此实现执行不稳定排序;亦即,如果两元素相等,则其顺序可能不被保留。相反,稳定排序保留相等元素的顺序。一般情况下,此方法的运算复杂度为 O(n log n),其中 n 是 keys 的 Length;最坏的情况下其运算复杂度为 O(n ^ 2)。
把我弄晕了
给我讲讲到底是怎么排序的把,最好是有个实例!
Array.Sort(Array, Array)
谢谢