我正在使用较大的二进制矩阵,目前高达100x100。
让我们说我正在使用30x30二进制矩阵。然后总共有2 ^(30x30)个二进制矩阵。我想随机选择一个二进制矩阵,其中每个2 ^(30x30)矩阵具有相同的被选择概率。
我的解决方案尝试使用函数randi(n)和n = 2 ^(30x30)选择1到2 ^(30x30)之间的数字,然后将结果转换为适当的二进制矩阵。我遇到的问题是randi(n)不会取n大于2 ^ 54的值。 Matlab一般似乎不喜欢非常大的数字。
有什么建议吗?
答案 0 :(得分:2)
如果布尔的每个矩阵具有相等的概率,则矩阵的元素各自具有0和1的相等概率。您可以使用 n ²均匀随机布尔值填充适当大小的矩阵
我没有MATLAB方便,但在Octave你会做unidrnd(2, n, n) - 1
之类的事情。
答案 1 :(得分:2)
您可以在[0 1]范围内使用randint
:
matrix=randint(30,30,[0 1]);
您还可以使用rand
并对生成的矩阵进行阈值处理:
matrix=rand(30,30);
matrix=round(matrix);
编辑:刚刚意识到它也适用于randi
,语法如下:
matrix=randi([0 1],30,30);