random number generation to add and subtract
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ananya Malik
am 8 Sep. 2017
Beantwortet: Guillaume
am 8 Sep. 2017
I want to create an array of 4 single digit numbers in the range [-9,9] without 0. Addition of these 4 numbers should result in a positive number within 0-9 range. for ex. a= [4,-2,3,-1] =4. However 1st number should be compulsorily positive. And subsequent addition/subtraction should be valid.(i.e. negative number should be subtracted from a positive number). Any help would be greatly appreciated.
So far I have tried this:
a= randi([-9,9],4,1);
if sum(a)>=0 && sum(a)<9
a'
end
2 Kommentare
Pal Szabo
am 8 Sep. 2017
What you mean by this? "And subsequent addition/subtraction should be valid.(i.e. negative number should be subtracted from a positive number)."
Akzeptierte Antwort
Pal Szabo
am 8 Sep. 2017
Try this, it works for me.
% invoke myfunction
[firstnum secondnum thirdnum fourthnum]=myfunction
% if the fourth number produced is outside the desired range or zero,
% invoke function again
while (-9<=fourthnum & fourthnum<=9 & fourthnum~=0)==0
[firstnum secondnum thirdnum fourthnum]=myfunction
end
%%here are your numbers
firstnum
secondnum
thirdnum
fourthnum
function [firstnum secondnum thirdnum fourthnum]=myfunction
base1 = [-9:1:-1];
base11 = [1:1:9];
base = [base1 base11];
i=randi(9);
firstnum=base11(i);
ii=randi(18);
secondnum=base(ii);
iii=randi(18);
thirdnum=base(iii);
fourthnum=4-firstnum-secondnum-thirdnum
end
0 Kommentare
Weitere Antworten (2)
Guillaume
am 8 Sep. 2017
Another option:
numbers = -1;
while sum(numbers) < 0 | sum(numbers) > 9 | any(cumsum(numbers) < 0)
numbers = randi([1 9], 1, 4) .* (-1).^[2, randi([1 2], 1, 3)];
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Bartlett finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!