在matlab中用数字随机数生成矩阵
当在每列中我必须有40%的数字1和60%的数字0时,我如何在Matlab中创建一个具有数字1和0的随机分布的矩阵(20 X 12)?这一定是随机分布 有人能帮我吗 非常感谢 这可能是一种“激进”的方法-在matlab中用数字随机数生成矩阵,matlab,random,Matlab,Random,当在每列中我必须有40%的数字1和60%的数字0时,我如何在Matlab中创建一个具有数字1和0的随机分布的矩阵(20 X 12)?这一定是随机分布 有人能帮我吗 非常感谢 这可能是一种“激进”的方法- N = 10000;%%// A big number to choose 12 columns from A = round(rand(20,N)); out = A(:,find(sum(A,1)==round(0.4*size(A,1)),12)) 让我们知道这是否适用于您 这是一种稳健
N = 10000;%%// A big number to choose 12 columns from
A = round(rand(20,N));
out = A(:,find(sum(A,1)==round(0.4*size(A,1)),12))
让我们知道这是否适用于您 这是一种稳健的方法,将每列的前40%设置为
1
,然后随机对每列重新排序
m=20;
n=12;
M = zeros(m,n);
M(1:round(m*0.4),:) = 1;
for col = 1:n
M(:,col) = M(randperm(m), col);
end
一种有效的方法是:
谢谢它起作用了,但N值大的目的是什么?我不明白它的用途!!基本上,我们正在创建一个大型矩阵(20xN),并从中选择满足40%标准的前12列。非常容易理解和使用,如果你问我:)是的,我得到了..你实际上选择了12列满足给定条件。限制N,比如说30,不能确保获得所需的条目数..正是,这就是为什么“侵略性”。完美..这个函数对我来说是新的..我将在帮助中查看。谢谢汉克·丹。我也使用了同样的方法,但是没有得到正确的输出。最后从你的回复中发现了我的错误。
rows = 20;
cols = 12;
p = 40; %// percent of 1 values
A = rand(rows,cols); %// uniform random values between 0 and 1
perc = prctile(A,p); %// percentile of each column
A = bsxfun(@le, A, perc); %// 1 if lower or equal than percentile, 0 otherwise