asp.net C#怎能把一维数组中元素随机打乱排序?
比如int[]num={1,2,3,4,5,6,7,8,9}如何能得到一个随机排序的新数组?如int[]newnum={4,7,1,2,8,3,9,5,6}....
比如 int[] num = {1,2,3,4,5,6,7,8,9} 如何能得到一个随机排序的新数组?如 int[] newnum={4,7,1,2,8,3,9,5,6} .
展开
展开全部
设有初始数组 int[] num={5,6,9,8,3,7,4,1,2},求随即排序后的数组 int[] newNum,代码如下:
int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] newNum = new int[num.Length];
List<int> numCopy = new List<int>();
foreach (int i in num)
{
numCopy.Add(i);
}
Random random = new Random();
for (int i = 0; i < num.Length; i++)
{
int selectedIndex = random.Next(num.Length - i);
newNum[i] = numCopy[selectedIndex];
numCopy.RemoveAt(selectedIndex);
}
运行完后newNum里面的新数据就是随机排序数组.
一楼三楼的代码有可能出现死循环,二楼得到的新的数组中的数值有可能是重复的,此乃正解。
int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] newNum = new int[num.Length];
List<int> numCopy = new List<int>();
foreach (int i in num)
{
numCopy.Add(i);
}
Random random = new Random();
for (int i = 0; i < num.Length; i++)
{
int selectedIndex = random.Next(num.Length - i);
newNum[i] = numCopy[selectedIndex];
numCopy.RemoveAt(selectedIndex);
}
运行完后newNum里面的新数据就是随机排序数组.
一楼三楼的代码有可能出现死循环,二楼得到的新的数组中的数值有可能是重复的,此乃正解。
展开全部
Random ran = new Random();
int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//存放随机数的集合
IList<int> list = new List<int>();
//经过随机获取之后的数组
int[] arr = new int[num.Length];
//循环向list里面添加随机数,如果集合中已存在相同的随机数,
//则继续取随机数,直到集合中不存在为止
for (int i = 0; i < num.Length; i++)
{
int j = ran.Next(0, num.Length);
if (list.Contains(j))
{
j = ran.Next(0, num.Length);
while (list.Contains(j))
{
j = ran.Next(0, num.Length);
}
list.Add(j);
}
else
{
list.Add(j);
}
}
//按顺序获取随机数集合中的值,并给arr数组赋值
for (int i = 0; i < num.Length; i++)
{
arr[i] = num[list[i]];
}
完成之后,arr里 就是 随机打乱之后的数组
int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//存放随机数的集合
IList<int> list = new List<int>();
//经过随机获取之后的数组
int[] arr = new int[num.Length];
//循环向list里面添加随机数,如果集合中已存在相同的随机数,
//则继续取随机数,直到集合中不存在为止
for (int i = 0; i < num.Length; i++)
{
int j = ran.Next(0, num.Length);
if (list.Contains(j))
{
j = ran.Next(0, num.Length);
while (list.Contains(j))
{
j = ran.Next(0, num.Length);
}
list.Add(j);
}
else
{
list.Add(j);
}
}
//按顺序获取随机数集合中的值,并给arr数组赋值
for (int i = 0; i < num.Length; i++)
{
arr[i] = num[list[i]];
}
完成之后,arr里 就是 随机打乱之后的数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int[] num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] num2 = new int[num.Length];//实例化等长的新数组
Random random = new Random();
for (int i = 0; i < num.Length;i++ )
{
int j = random.Next(num.Length);//随机生成0-数组长度-1的数字,也就是随机获取数组下标
num2[i] = num[j];//将随机的数组值,赋值给新数组
}
foreach (int n in num2) {//测试,查看数组
Response.Write(n+" ");
}
int[] num2 = new int[num.Length];//实例化等长的新数组
Random random = new Random();
for (int i = 0; i < num.Length;i++ )
{
int j = random.Next(num.Length);//随机生成0-数组长度-1的数字,也就是随机获取数组下标
num2[i] = num[j];//将随机的数组值,赋值给新数组
}
foreach (int n in num2) {//测试,查看数组
Response.Write(n+" ");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-09
展开全部
int[] intArr = new int[25];
ArrayList myList = new ArrayList();
Random rnd = new Random();
while (myList.Count < 25)
{
int num = rnd.Next(1, 26);
if (!myList.Contains(num))
myList.Add(num);
}
for (int i = 0; i <25; i++)
{
intArr[i] = (int)myList[i];
Console.Write("{0} ", intArr[i]);
Console.WriteLine();
}
这是将1-25这些数,随机输出。你可以参考一下。
ArrayList myList = new ArrayList();
Random rnd = new Random();
while (myList.Count < 25)
{
int num = rnd.Next(1, 26);
if (!myList.Contains(num))
myList.Add(num);
}
for (int i = 0; i <25; i++)
{
intArr[i] = (int)myList[i];
Console.Write("{0} ", intArr[i]);
Console.WriteLine();
}
这是将1-25这些数,随机输出。你可以参考一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以直接在后台用cs代码循环一下,输出javascript代码就行了。
或者如楼上所讲,在后台用CS代码把数组循环输出成“[1,2,3,4,...]”的格式,然后再赋值给js。
或者如楼上所讲,在后台用CS代码把数组循环输出成“[1,2,3,4,...]”的格式,然后再赋值给js。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询