Вы можете подойти к этому в одном из двух пути (а-ля Луис Mendo):
подход № 1 - Детерминированный
Если вы знаете, что вам нужно ровно 500 единиц и 500 нулей на каждый раз, когда вы создаете этот вектор, вы можете создать набор индексов из От 1 до 1000 (или вообще от 1 до столько элементов, сколько вы хотите - num_elements
) a й экстракт 500 (или вообще round(ratio*num_elements)
, где ratio
находится между [0,1]
). Вы бы затем использовать эти показатели и установить расположение в начальной нулевой вектор 1:
num_elements = 1000;
ratio = 0.5; %// 50%
ind = randperm(num_elements, round(ratio*num_elements));
A = zeros(num_elements,1) == 1; %// Convert to logical
A(ind) = 1;
Подход № 2 - вероятностный
Вы можете генерировать равномерно распределенные случайные значения из [0-1]
и порога с 0,5, или ratio
:
num_elements = 1000;
ratio = 0.5;
A = rand(num_elements, 1) >= ratio;
Это в вероятностном смысле заполняет каждое значение в векторе с 50% (или вообще ratio
) шанс сделать значение 0 и 50% (или вообще 1 - ratio
) вероятность сделать значение 1.
Вы имеете в виду отношение _deterministic_ (вам нужно 500 единиц и 500 нулей в каждой реализации) или _пробабилистическое отношение (реализация может иметь больше, чем нули, но соотношение сохраняется во многих реализациях) ? –
Точка @LuisMendo является действительной. В зависимости от того, какой из них вы хотите, код будет совсем другим. – rayryeng