How to replace all elements that are not even integers?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
edward wiltz
le 30 Mar 2018
Réponse apportée : Birdman
le 30 Mar 2018
need to generate an array with 20 random integers, and replace all that are not even with another random integer
v=randi([10 30],1,20)
v1 = 0;
N = -1;
while N<0
N = 1;
for k = 1:20
if(~rem(v(k),2))
v1(k) = v(k);
end
end
end
2 commentaires
James Tursa
le 30 Mar 2018
Modifié(e) : James Tursa
le 30 Mar 2018
Where is your "replacing" code? I don't see any code under your "not even" test that generates another replacement random integer. Also, you should double check your "not even" test to make sure it is doing what you think it is doing. How is the N variable connected to your algorithm? I don't see any connection.
Réponse acceptée
Birdman
le 30 Mar 2018
This should help:
N=20;idx=1:N;
while true
v(idx)=randi([10 30],1,N);
if all(mod(v,2)==0)
break;
else
idx=find(mod(v,2)~=0);
N=numel(idx);
v(idx)=0;
end
end
0 commentaires
Plus de réponses (1)
David Fletcher
le 30 Mar 2018
A different way of doing it - generate a list of random integers much larger than the number you need, and pick out the subset of even numbers. Generate another list of random indices and use that to pick out 20 even numbers from the subset of even 'random' numbers (or just pick out the first 20 - I'm not sure it would make much difference)
list=randi([1 100],1,1000)
evenIndices=mod(list,2)==0
evenNums=list(evenIndices)
indexer=randperm(length(evenNums))
evenNums=evenNums(indexer(1:20))
NB - I make no claim concerning the validity of the 'randomness' of this method
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!