Randomly return of a vector element. How to?
Show older comments
Hi everyone,
I have a vector A, of let's say, 30 elements.
I need Matlab (R2017b) to return the same element constantly and at random times return one of the rest elements, randomly chosen.
How can I do such a thing?
4 Comments
Adam
on 5 Jul 2018
doc randi
You can use randi to generate a random integer. You can use it as index or as probability.
A=1:30;
for i=1:1000
prob = randi(10);
if prob == 1 %1 in 10 chance
rdm_el=randi(numel(A));
value= A(rdm_el);
else
value=1;
end
end
Tasos Ampelas
on 5 Jul 2018
randi only provides natural numbers (1,2,3,4). If you want a chance of 1 in 4 change the line above to
prob = randi(4);
short explanation:
prob = randi(4); %creates a random integer between 1 and 4 (1,2,3 or 4)
if prob ==1 % checks if the random integer is 1
Answers (1)
dpb
on 5 Jul 2018
ixFix = N; % set the particular element however is to be done...
iRet=[ixFix randperm(numel(A),1)]; % index vector of positions to return
B=A(iRet); % and get them...
Can, of course, eliminate temporaries shown for clarity if not needed for other purposes in the application.
B=A([N randperm(numel(A),1)]);
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!