111,126
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 从原数组内生成一个指定大小(长度小于原数组)的数组
/// </summary>
/// <param name="alOld">原数组</param>
/// <param name="count">目标随即数组的大小</param>
/// <returns>返回新的数组</returns>
private IList<int> GetQIDs(IList<int> alOld, int length)
{
IList<int> newList = new List<int>();
int min = 0;
while (newList.Count < length)
{
int max = alOld.Count-1;
while (true)
{
Random rnd = new Random();
int rand = rnd.Next(min, max + 1);
if (!Exists(newList, alOld[rand]))
{
newList.Add(rand);
alOld.RemoveAt(rand);
break;
}
}
}
return newList;
}
private bool Exists(IList<int> al, int n)
{
if (al.Contains(n))
return true;
else
return false;
}
/// <summary>
/// 从原数组内生成一个指定大小(长度小于原数组)的数组
/// </summary>
/// <param name="alOld">原数组</param>
/// <param name="count">目标随即数组的大小</param>
/// <returns>返回新的数组</returns>
private IList<int> GetQIDs(IList<int> alOld, int length)
{
IList<int> newList = new List<int>();
Random rnd = new Random();
int rand;
while (newList.Count <= length)
{
rand = rnd.Next(1, alOld.Count);
newList.Add(alOld[rand]);
alOld.RemoveAt(rand);
}
return newList;
}
/// <summary>
/// 从原数组内生成一个指定大小(长度小于原数组)的数组
/// </summary>
/// <param name="alOld">原数组</param>
/// <param name="count">目标随即数组的大小</param>
/// <returns>返回新的数组</returns>
private IList<int> GetQIDs(IList<int> alOld, int length)
{
IList<int> newList = new List<int>();
int min = 0;
Random rnd = new Random();
int rand;
while (newList.Count <= length)
{
rand = rnd.Next(1, alOld.Count);
newList.Add(rand);
alOld.RemoveAt(rand);
}
return newList;
}
/// <summary>
/// 从原数组内生成一个指定大小(长度小于原数组)的数组
/// </summary>
/// <param name="alOld">原数组</param>
/// <param name="count">目标随即数组的大小</param>
/// <returns>返回新的数组</returns>
private IList<int> GetQIDs(IList<int> alOld, int length)
{
IList<int> newList = new List<int>();
int max = alOld.Count;
if (max >= length)
{
while (newList.Count < length)
{
Random rnd = new Random();
int rand = rnd.Next(0, max);
newList.Add(alOld[rand]);
alOld.RemoveAt(rand);
max--;
}
}
return newList;
}
int[] GetQIDs(int[] alOld, int length)
{
int[] result = new int[length];
Random r = new Random(Environment.TickCount);
int count = 0;
while (count < length)
{
int j = r.Next(0, alOld.Length);
if (Array.IndexOf(result, alOld[j]) < 0)
{
result[count] = alOld[j];
count++;
}
}
return result;
}