怎么看不到别人回的帖子,只好再开一贴:还是生成不重复随机数和固定数组乱序的问题
1、固定数组乱序排列:
设数组包括1-999的所有整数,怎样将该数组乱序排列
2、生成指定数量的4位随机数,该数量少于9000(9999-1000+1)
private List<int> genRandomCode(int num)
{
Random ran = new Random();//实例一个随机器
List<int> list = new List<int>(num);//定义一个指定容量的链表
int i = 1;
while (i <= num)
{
int temp = ran.Next(1000, 10000)
if (!list.Contains(temp))//如果链表中不存在这个数
{
list.Add(temp);//链表中添加该数
i++;
}
}
return list;
}
这个方法总觉得不太可靠,
一是list是不是比较占内存,用数组或字典能不能好点
二是当要求生成的数量比较大时,random.next如果总是找到重复的值,该方法的结束时间是不是变得不可预测
------解决方案--------------------
C# code
public List<int> GenerateNumber()
{
Random random = new Random();
List<int> number = new List<int>(9000);
List<int> result = new List<int>(9000);
for (int i = 0; i < 10; i )
{
number.Add(i);
}
for (int i = 0; i < 4; i )
{
int tempNum = random.Next(0, number.Count);
result.Add(number[tempNum]);
number.RemoveAt(tempNum);
}
return result;
}