matlab - 在 MATLAB 中生成随机 'su doku' 类型矩阵

标签 matlab random sudoku

我需要在 MATLAB 中生成一些 5x6 矩阵。它们需要由 1-6 范围内随机生成的整数组成,但是,一个整数在特定行或列中不能出现多次。

这是我目前用来生成随机 5x6 矩阵的脚本:

mat=zeros(5,6);

rows=5;
columns=6;
for i=1:rows
  for j=1:columns
      mat(i,j)=round(rand*(high-low)+low);
  end
end
disp(mat)

但我不知道如何将关于重复的规则插入其中。

我确信这是一个相对简单的问题,但我是 MATLAB 的新手,无法生成满足这些条件的问题。如果有人能提供任何帮助,我将不胜感激。

最佳答案

试试这个:

    m = zeros(5,6);

    for row = 1:5
        flag = 1;
        while(flag)
            flag = 0;
            R = randperm(6);
            for testRow = 1:row
                flag = flag + sum(m(testRow,:) == R);
            end;
            if (~flag)
                m(row,:) = R;
            end;
        end;

    end;

    m

关于matlab - 在 MATLAB 中生成随机 'su doku' 类型矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888531/

相关文章:

Matlab - 高斯混合和模糊 C 均值在高维数据(26 维向量图像)上不如 K 均值准确

python - 来自迭代器的随机项目?

c++ - OpenCV - 去除凸性缺陷(Python 到 C++)

python - 回溯在 Python 中的工作原理

c++ - 如何在wxWidgets中刷新,C++

matlab - 逻辑回归代价的向量化

matlab - 从张量的每个正面切片中提取对角线元素

c++ - 如何使 MATLAB 函数在 html 中运行?

algorithm - 如何在一个范围内生成2个不相邻的随机数

excel - 对 n 个随机数求和(用于模拟目的)