C语言程序设计; 生产具有不重复随机数的2维矩阵(C Programming; Producin

2019-11-04 05:38发布

我想通过插入随机数的行和列中的元素,而不必重复,以产生一个6×6矩阵。 这是到目前为止我的代码。 谢谢您的帮助!

#include <stdio.h>
#include <stdlib.h>

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;
}

Answer 1:

为了避免重复:

  1. 创建36个元素的一维数组
  2. 填1D阵列与数字1直通36
  3. 费雪耶茨洗牌 1D阵列
  4. 使用一维阵列的混洗内容初始化2D阵列


Answer 2:

尝试这个:

#include<stdio.h>
#include<stdlib.h>

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;
}


文章来源: C Programming; Producing a 2-Dimensional Matrix with Random Numbers without Repetition