How to randomize the color of two objects so that are not the same color?
3 views (last 30 days)
Show older comments
Here is my code:
random = rand(1)
if random <(1/4)
colour1 = [200 200 0]
elseif random>=(1/4) && random<(2/4)
colour1 = [200 0 0]
elseif random>=(2/4) && random<(3/4)
colour1 = [0 200 0]
elseif random>=(3/4) && random<(4/4)
colour1 = [0 0 200]
end
The above code works great - when I run the program it randomizes the color of an object between 4 different colors. However, I need code that randomizes the colors of another object so that if colour1 = [200 000 000], it will be one of the three available colors. I essentially need code that says something like colour2 (does not)= colour1, randomize the other three colors.
Any help would be very, very appreciated. :)
0 Comments
Accepted Answer
Walter Roberson
on 13 Nov 2012
colarray = [200 200 0; 200 0 0; 0 200 0; 0 0 200];
colidx1 = randi(4,1,1);
colour1 = colarray(colidx1,:);
colidx2 = randi(4,1,1);
while ismember(colidx2, colidx1)
colidx2 = randi(4,1,1);
end
color2 = colarray(colidx2,:);
colidx3 = randi(4,1,1);
while ismember(colidx3, [colidx1, colidx2])
.... and you should be able to finish from here
2 Comments
Walter Roberson
on 13 Nov 2012
This can be improved quite a bit if you are willing to modify your variables slightly:
numobj = 4; %can be less than number of colors
colarray = [200 200 0; 200 0 0; 0 200 0; 0 0 200];
colidx = randperm(size(colarray,1));
colidx = colidx(1:numobj);
color = colarray(colidx, :);
And if you have one of the newer versions of MATLAB this can be reduced slightly:
numobj = 4; %can be less than number of colors
colarray = [200 200 0; 200 0 0; 0 200 0; 0 0 200];
colidx = randperm(size(colarray,1), numobj);
color = colarray(colidx, :);
These do not generate separate variables for the colors, they generate an array in which the rows correspond to the colors for the different objects.
More Answers (1)
Image Analyst
on 13 Nov 2012
Why can't you just set the color of colour2 at the same time as when you set colour1, inside the if statements? Just set it to one of the other colors, one of the ones you didn't set colour1 to.
See Also
Categories
Find more on Spreadsheets in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!