怎么看不到别人回的帖子,只好再开一贴:还是生成不重复随机数和固定数组乱序的问题
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如果总是找到重复的值,该方法的结束时间是不是变得不可预测
[解决办法]
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;}