如何用C语言重复的产生不重复的0到9之间的随机数?

比方说我要循环20次,要这20次循环产生的9组随机数的顺序不同?

这种是算法问题,有很多中办法啊,比如你定义一个a[10]里面放10个数,然后你设计一个函数,函数里随机生成一个0-9的随机数i,然后a[0]和a[i]交换,然后在你20次循环的一次循环里,跑100次这个函数,生成一组新数组。你20次就是生成20组不同的数组
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-11
#include<stdio.h> //提供printf函数声明定义
#include<stdlib.h> //提供srand函数声明定义,rand
#include<time.h> //提供time函数
int is_same(int *t,int lo,int x);
int main()
{
int a[10];
int num=20;
int t,i;
srand(time(0));
//此函数提供种子,即time(0)系统时间秒数。这让rand()函数提供的数字每秒都不一样

while(num>0) //循环次数
{
for(i=0;i<10;i++) //获取一行10个数
{
while(1) //每次随机获取一个数
{
t=rand()%10;
if(i==0)
{
a[i]=t;
break;
}
if(is_same(a,i,t)==0) //必须不相同才能获取一行的下一个数
{
a[i]=t;
break;
}
}
printf("%d ",t);
}
printf("\n");
num--;

}
return 0;
}
int is_same(int *t,int lo,int x) //是否有相同
{
int i;
for(i=0;i<lo;i++)
{
if(*(t+i)==x) //如果有相同的返回真
return 1;
}
return 0; //否则返回假
}本回答被提问者和网友采纳
相似回答