Generate a random logical vector of a given size with a given number of true values?
Mostra commenti meno recenti
How can I generate random logical vector with the set number of true values?
E.g. I want a vector with 10 elements that has 7 true values:
[1 1 1 0 0 1 1 0 0 0]
[1 1 0 1 0 1 1 0 0 0]
...
I tried something like:
random_num = zeros(1,10); % generates vector of 10 zero values
num_true_val = 7; % wanted number of true values
Sum = sum(random_num);
while Sum<num_true_val
position = randi([1 width(random_num)],1,1); % generate random position btw 1 and 10
random_num(1,position) = 1; % pin value of 1 to that position
Sum = sum(random_num); % calc sum again
random_num = logical(random_num)
end
disp(random_num)
This does the job but seems too long and I feel like there might be a better solution.
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Creating and Concatenating Matrices in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!