C# 打乱数组
借鉴人家的方法,记录一下。
定义一个泛型类
//写一个泛型类
class Item<T>
{
T[] item;
//构造函数
public Item(T[] obj)
{
item = new T[obj.Length];
for (int i = 0; i < obj.Length; i++) {
item[i] = obj[i];
}
}
public Type ShowType() { return typeof(T); } //返回类型
public T[] GetItems() { return item; } //返回原数组
//返回打乱顺序后的数组
public T[] GetDisruptedItems()
{
//生成一个新数组:用于在之上计算和返回
T[] temp;
temp = new T[item.Length];
for (int i = 0; i < temp.Length; i++) { temp[i] = item[i]; }
//打乱数组中元素顺序
System.Random rand = new System.Random(DateTime.Now.Millisecond);
for (int i = 0; i < temp.Length; i++) {
int x, y; T t;
x = rand.Next(0, temp.Length);
do {
y = rand.Next(0, temp.Length);
} while (y == x);
t = temp[x];
temp[x] = temp[y];
temp[y] = t;
}
return temp;
}
调用示例
打乱int型数组
Item<int> disrupter = new Item<int>(allDingDanOrderArr);
allDingDanOrderArr = disrupter.GetDisruptedItems();
打乱string型数组
Item<string> disrupterName = new Item<string>(allNameArr);
allNameArr = disrupterName.GetDisruptedItems();//打乱顺序