Я хочу выбирать случайно цвета, но только между ними (красный, синий, зеленый и желтый), вот некоторые из кода, который я пытаюсь.
public class LittleBall extends JPanel {
private Random random = new Random();
private float r = random.nextFloat();
private float g = random.nextFloat();
private float b = random.nextFloat();
.....
public void paint (Graphics g) {
Color randomColor = new Color(r, this.g, b);
g.setColor(randomColor);
}
}
Но это просто дает каждый цвет в мире oO, конечно, потому что nextFloat из переменных r, g и b дает случайные числа. Но я просто хочу уйти между цветами.
Благодарю.
Создайте массив цветов и произвольно получите цвет.
Color[] colors = new Color[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW };
Color randomColor = colors[(int)( Math.random() * 4)];
// or try this one
//Color randomColor = colors[new Random().nextInt(4)];
использовать ниже
Random rand = new Random();
private int r = rand.nextInt(4) + 1;
private int g = rand.nextInt(4) + 1;
private int b = rand.nextInt(4) + 1;
private int y = rand.nextInt(4) + 1;
Color randomColor = new Color(r, g, b,y);
g.setColor(randomColor);
Math.random()
возвращает случайное число между 0 и 1. Умножая это значение на диапазон чисел, вы можете выбрать любое значение между min и max. Тогда вам, скорее всего, нужно будет передать его в int, чтобы получить фактическое значение для R, G и/или B.
int r = (int) Math.random() * ( max - min )
даст вам значение r
между указанными min
и max
. Поэтому вы можете выбрать диапазон следующим образом:
int r = (int) Math.random() * ( 255 - 100 )
даст вам значение для красного между 100 и 255. Вы можете, конечно, просто сделать вычитание в голове и просто положить
int r = (int) Math.random() * ( 155 )
Вы можете повторить это значение для зеленого и синего.
Возможно, вы также можете использовать значения float, если хотите. Int просто усечет десятичные значения из вашего результата.
EDIT: Увидев, что у вас есть, вы должны обязательно использовать float, а не int.
Random generator = new Random();
float i = generator.nextInt(4)+1;
choose randomly colors, but only between of them (Red, Blue, Green and Yellow)
Это ваш ответ?