Randomly return of a vector element. How to?
Mostrar comentarios más antiguos
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 comentarios
Adam
el 5 de Jul. de 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
el 5 de Jul. de 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
Respuestas (1)
dpb
el 5 de Jul. de 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)]);
Categorías
Más información sobre Random Number Generation en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!