C++怎样随机输出两个5*5的矩阵,输出数字的范围是1至25,并且矩阵中的数字不能有重复。
展开全部
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int n,i,j,k,a[25];
time_t cc;
time(&cc);
srand(cc);//随机种子
//计算机不能产生绝对的随机数,我们只好用时间作为随机数种子凑和下了
for(int n=0; n<2; n++)
{
for(int i=0;i<25;i++)a[i]=0;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
for(k=rand()%25; a[k]!=0; k=rand()%25);//判断是否重复
cout<<k+1<<"\t";
a[k]=1;
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int n,i,j,k,a[25];
time_t cc;
time(&cc);
srand(cc);//随机种子
//计算机不能产生绝对的随机数,我们只好用时间作为随机数种子凑和下了
for(int n=0; n<2; n++)
{
for(int i=0;i<25;i++)a[i]=0;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
for(k=rand()%25; a[k]!=0; k=rand()%25);//判断是否重复
cout<<k+1<<"\t";
a[k]=1;
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
展开全部
程序如下,已测试通过
#include <ctime>
#include<iostream>
using namespace std;
const array_size=25;
int getValue(int y[])
{
int m=rand()%array_size+1;
int diff=0;
while(diff==0)
{
diff=1;
for(int i=0;i<array_size;i++)
{
if (m==y[i])
{
m=rand()%array_size+1;
diff=0;
break;
}
}
if (diff==1)
return m;
}
return 0;
}
void main()
{
int x[array_size];
int m;
cout<<"请输入想生成几个矩阵:"<<endl;
cin>>m;
srand( (unsigned)time( NULL ) );
for (int n=1;n<=m;n++)
{
for(int i=0;i<array_size;i++)
x[i]=0;
for( i=0;i<array_size;i++)
x[i]=getValue(x);
for(i=0;i<array_size;i++)
{
if (i % 5==0)
{
cout<<endl;
}
cout<<x[i]<<" ";
}
cout<<endl<<"-------------------------------------";
}
}
#include <ctime>
#include<iostream>
using namespace std;
const array_size=25;
int getValue(int y[])
{
int m=rand()%array_size+1;
int diff=0;
while(diff==0)
{
diff=1;
for(int i=0;i<array_size;i++)
{
if (m==y[i])
{
m=rand()%array_size+1;
diff=0;
break;
}
}
if (diff==1)
return m;
}
return 0;
}
void main()
{
int x[array_size];
int m;
cout<<"请输入想生成几个矩阵:"<<endl;
cin>>m;
srand( (unsigned)time( NULL ) );
for (int n=1;n<=m;n++)
{
for(int i=0;i<array_size;i++)
x[i]=0;
for( i=0;i<array_size;i++)
x[i]=getValue(x);
for(i=0;i<array_size;i++)
{
if (i % 5==0)
{
cout<<endl;
}
cout<<x[i]<<" ";
}
cout<<endl<<"-------------------------------------";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个25的数组,然后填入1-25,再用stl的random_shuffle
#include <algorithm>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
int a[25] = {0};
int i = 0;
for (i = 0; i < 25; i++)
{
a[i] = i;
}
srand(time(NULL));
printf("第一个\n");
random_shuffle(&a[0], &a[24]);
for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}
printf("第二个\n");
random_shuffle(&a[0], &a[24]);
for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}
return 0;
}
#include <algorithm>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
int a[25] = {0};
int i = 0;
for (i = 0; i < 25; i++)
{
a[i] = i;
}
srand(time(NULL));
printf("第一个\n");
random_shuffle(&a[0], &a[24]);
for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}
printf("第二个\n");
random_shuffle(&a[0], &a[24]);
for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*
生成一个随机的5X5矩阵并输出
*/
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
/*
获得随机数
limit 限制生成的随机数在某个范围内
*/
int getRandNumber(int limit)
{
return rand()%limit;
}
/*
采用当前的时间加上一个偏移量offset作为随机数的种子;
生成一个5X5的矩阵,然后存储在数组array中
num代表数组元素的个数
*/
void matrixGenerator(int* array,int num,int offset)
{
int count = 0;
int* p = array;
srand(time(NULL)+offset);
while(count != num)
{
if(count == 0)
{
int randNum = getRandNumber(25);
p[count] = randNum;
count++;
}
else
{
while(true)
{
int randNum = getRandNumber(25);
int i;
for(i=0 ; i<count ;i++)
{
if(randNum == p[i])
{
break;
}
}
if( i == count)
{
p[count] = randNum;
break;
}
}
count++;
}
}
}
void printMatrix(int* matrix,int num)
{
int* p = matrix;
cout<<"随机生成的矩阵如下:\n";
for(int i=0 ; i<num ; i++)
{
cout <<p[i]<<"\t";
if((i+1)%5 == 0)
cout <<"\n";
}
}
int main()
{
//申请内存空间
int* matrixA = new int[25];
int* matrixB = new int[25];
//生成矩阵A
matrixGenerator(matrixA,25,1);
//输出矩阵A
printMatrix(matrixA,25);
//生成矩阵B
matrixGenerator(matrixB,25,2);
//输出矩阵B
printMatrix(matrixB,25);
//释放内存
delete [] matrixA;
delete [] matrixB;
return 0;
}
生成一个随机的5X5矩阵并输出
*/
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
/*
获得随机数
limit 限制生成的随机数在某个范围内
*/
int getRandNumber(int limit)
{
return rand()%limit;
}
/*
采用当前的时间加上一个偏移量offset作为随机数的种子;
生成一个5X5的矩阵,然后存储在数组array中
num代表数组元素的个数
*/
void matrixGenerator(int* array,int num,int offset)
{
int count = 0;
int* p = array;
srand(time(NULL)+offset);
while(count != num)
{
if(count == 0)
{
int randNum = getRandNumber(25);
p[count] = randNum;
count++;
}
else
{
while(true)
{
int randNum = getRandNumber(25);
int i;
for(i=0 ; i<count ;i++)
{
if(randNum == p[i])
{
break;
}
}
if( i == count)
{
p[count] = randNum;
break;
}
}
count++;
}
}
}
void printMatrix(int* matrix,int num)
{
int* p = matrix;
cout<<"随机生成的矩阵如下:\n";
for(int i=0 ; i<num ; i++)
{
cout <<p[i]<<"\t";
if((i+1)%5 == 0)
cout <<"\n";
}
}
int main()
{
//申请内存空间
int* matrixA = new int[25];
int* matrixB = new int[25];
//生成矩阵A
matrixGenerator(matrixA,25,1);
//输出矩阵A
printMatrix(matrixA,25);
//生成矩阵B
matrixGenerator(matrixB,25,2);
//输出矩阵B
printMatrix(matrixB,25);
//释放内存
delete [] matrixA;
delete [] matrixB;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询