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} . 展开
 我来答
老李拙见
2011-09-09
知道答主
回答量:11
采纳率:0%
帮助的人:9.9万
展开全部
设有初始数组 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里面的新数据就是随机排序数组.
一楼三楼的代码有可能出现死循环,二楼得到的新的数组中的数值有可能是重复的,此乃正解。
来自濛洲桥诚恳的君影草
2011-09-09 · 超过15用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:36.2万
展开全部
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里 就是 随机打乱之后的数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangsen2235068
2011-09-09 · 超过15用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:28.6万
展开全部
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+" ");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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这些数,随机输出。你可以参考一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ui8hb7n
2011-09-09 · 贡献了超过103个回答
知道答主
回答量:103
采纳率:0%
帮助的人:60.6万
展开全部
可以直接在后台用cs代码循环一下,输出javascript代码就行了。

或者如楼上所讲,在后台用CS代码把数组循环输出成“[1,2,3,4,...]”的格式,然后再赋值给js。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式