Использование
rand(N,1)<p %# 0 < p < 1
даст вам вектор Nx1 с в среднем N * p в нем (а в других местах будет ноль) - но на некоторых прогонах вы можете получить вектор, отличный от того, что вы ожидаете например, он может иметь все нули ... может быть очень маловероятным, но все же не равным нулю).
Если вы хотите точно единиц и B нулей, вы можете сделать это:
rand_vec = [ones(A, 1); zeros(B, 1)];
rand_vec = rand_vec(randperm(A+B));
Затем вы можете установить A и B в соответствии со своими потребностями.
EDIT:
Теперь я понял ваш вопрос лучше:
Допустим, у вас есть вектор p, который содержит искомые пропорции 1 в вашем населении, N - количество элементов в каждом векторе.
rand_mat = rand(N, size(p,2)) < repmat(p', [1,N])';
Даст вам матрицу Nx (размер (p, 2)), где столбец i - это вектор с p (i) (в среднем, как описано выше), а остальные - нули.