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

James Tursa
James Tursa 2018년 3월 30일
편집: James Tursa 2018년 3월 30일
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.
edward wiltz
edward wiltz 2018년 3월 30일
편집: edward wiltz 2018년 3월 30일
This is how far I got, would you point me in the right direction. How can I replace elements that are not divisible by 2, with another random number until it is divisible by 2

댓글을 달려면 로그인하십시오.

 채택된 답변

Birdman
Birdman 2018년 3월 30일
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

추가 답변 (1개)

David Fletcher
David Fletcher 2018년 3월 30일
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

카테고리

도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2018년 3월 30일

답변:

2018년 3월 30일

Community Treasure Hunt

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

Start Hunting!

Translated by