如何在Matlab中创建一个矩阵(20×12),随机分布数字1和0,在每列中我必须有40%的数字1和60%的数字0?这必须是随机分布。
有人可以帮助我吗?
非常感谢!
答案 0 :(得分:4)
一种有效的方法是:
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
答案 1 :(得分:1)
这是一个强大的方法,将每列的前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
答案 2 :(得分:0)
这可能是一个"积极的"方法 -
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))
请告诉我们这是否适合您!