Randomly return of a vector element. How to?

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

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
Thank you Dennis.
The ''if prob == 1'' gives the chance of the random pick right?
So if I write ''if prob == 2,5'' this will be 1 random pick in 4?
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

Sign in to comment.

Answers (1)

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

Tags

Asked:

on 5 Jul 2018

Answered:

dpb
on 5 Jul 2018

Community Treasure Hunt

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

Start Hunting!