
如何将一个数组随机打乱
2个回答
展开全部
假定提问者会使用rand获取随机数。
定义L为数组元素数量。
循环L次,每次获得两个 0~L-1之间的随机数,交换这两个下标对应的值。
定义L为数组元素数量。
循环L次,每次获得两个 0~L-1之间的随机数,交换这两个下标对应的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组大小 n; 一次产生2个 随机下标,交换这2个数;像炒饭似地 做它100次,就打得够乱了。
例子:
#include<stdio.h>
#include<time.h>
int main( )
{
int a[50],v;
int i,i1,i2;
int n=50;
for (i=0;i<n;i++) a[i]=i;
srand(time(NULL));
for(i=0;i<100;i++){
i1 = rand() % n;
i2 = rand() % n;
v=a[i1];a[i1]=a[i2];a[i2]=v;
}
for (i=0;i<n;i++) {
if (i % 10 == 0) printf("\n");
printf("%4d ",a[i]);
};
return 0;
}
例子:
#include<stdio.h>
#include<time.h>
int main( )
{
int a[50],v;
int i,i1,i2;
int n=50;
for (i=0;i<n;i++) a[i]=i;
srand(time(NULL));
for(i=0;i<100;i++){
i1 = rand() % n;
i2 = rand() % n;
v=a[i1];a[i1]=a[i2];a[i2]=v;
}
for (i=0;i<n;i++) {
if (i % 10 == 0) printf("\n");
printf("%4d ",a[i]);
};
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询