Create a vector with binary values {0,1} with certain percentage of 0's and 1's

9 views (last 30 days)
Hi all,
It may be a pretty simple question for many, but I cannot figure out the answer.
I am developing a simualtion in which 1 denotes device ON and 0 denotes OFF. My simulation has x% ON devices (and of course (1-x) % OFF devices).
So, device 1 is denoted by element 1, dev. 2 by element 2 and so on...
In my simulation, I am working in vector mode (I avoid loops).
How can I generate vector of Zeros and Ones (0,1) in which x% elements are 1, rest are 0.
I need something like this (randomly generated in each simulation run)
[1 1 1 0 1 1 0 0 1 0 1 1 0 0 1]
1 => Dev ON
0 => Dev OFF

Accepted Answer

KSSV
KSSV on 28 May 2020
Edited: KSSV on 28 May 2020
N = 10 ; % total numner of elements
O = 6 ; % Number of 1 needed
F = N-O ; % Number of 0
O = ones(1,O) ;
F = zeros(1,F) ;
T = [O F] ;
idx = randperm(N) ; % randomise the indices
T = T(idx)
  1 Comment
KSSV
KSSV on 28 May 2020
Alternative a code with less steps:
N = 10 ; % total numner of elements
O = 6 ; % Number of 1 needed
T = zeros(1,N) ;
idx = randperm(N,O) ;
T(idx) = 1

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!