C编程; 生成具有随机数的二维矩阵,无需重复
我想通过在行和列中的元素中插入随机数而不重复来生成6×6矩阵。 到目前为止这是我的代码。 谢谢您的帮助!
#include #include int main(void) { int array[6][6]; int rows, columns; int random; srand((unsigned)time(NULL)); for(rows=0;rows<6;rows++) { for(columns=0;columns<6;columns++) { random=rand()%36+1; array[rows][columns] = random; printf("%i",array[rows][columns]); } printf("\n"); } return 0; }
为避免重复:
- 创建一个包含36个元素的一维数组
- 用1到36的数字填充1D数组
- Fisher-Yates将1Darrays洗牌
- 使用1D数组的混洗内容来初始化2D数组
试试这个:
#include #include int main() { int array[6][6]; int rows,columns; int random,i; int randvalues[36],m=0; int t,j; for(i=0;i<36;i++) //assigning values 1 to 36 randvalues[i]=i+1; for(i=0;i<36;i++) //shuffle logic { j=i+rand()/(RAND_MAX/(36-i) + 1); t=randvalues[j]; randvalues[j] = randvalues[i]; randvalues[i] = t; } for(rows=0;rows<6;rows++) //conversion from 1-D to 2-D array and printning { for(columns=0;columns<6;columns++) { array[rows][columns] = randvalues[m++]; printf("%d " , array[rows][columns]); } printf("\n"); } return 0; }