Как сделать рандомный цвет в java

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Я хочу нарисовать random цветных точек на JPanel в приложении Java. Существует ли какой-либо метод создания random цветов?

Возможный Дубликат : Простой генератор чисел random C Может ли кто-нибудь опубликовать ссылки, которые вы знаете, которые помогут понять создание пользовательского генератора чисел random в C. Мне не хватает основной идеи о том, как random генератор чисел works.Posting логика тоже поможет.

Я знаю, что это возможный дублированный вопрос. Ruby, генерируйте цвет random hex Мой вопрос несколько иной. Мне нужно знать, как генерировать только светлые цвета random hex, а не темные.

Используйте библиотеку random:

Затем создайте генератор random:

Поскольку цвета разделены на красный, зеленый и синий, вы можете создать новый цвет random, создав random основных цветов:

Затем, чтобы окончательно создать цвет, передайте основные цвета в конструктор:

Вы также можете создавать различные эффекты random, используя этот метод, например, создавать цвета random с большим акцентом на определенные цвета . переходя в меньшее количество зеленого и синего, чтобы получить цвет "pinker" random.

Или чтобы гарантировать, что генерируется только "light" цветов, вы можете генерировать цвета, которые всегда > 0.5 каждого цветового элемента:

Существуют различные другие функции цвета, которые можно использовать с классом Color , например, чтобы сделать цвет ярче:

Однострочный для значений random RGB:

Если вам нужны приятные пастельные тона, лучше всего использовать систему HLS.

Скопируйте и вставьте это для ярких пастельных цветов радуги

Если вы не хотите, чтобы это выглядело ужасно, я бы предложил определить список цветов в массиве, а затем использовать генератор чисел random, чтобы выбрать один из них.

Если вам нужен действительно цвет random,вы можете просто сгенерировать 3 числа random от 0 до 255,а затем использовать конструктор Color(int, int, int) для создания нового экземпляра цвета.

Итак, у меня есть следующий метод генерации random цветов, который я использую в своем приложении: public final Color generateRandomColour() < return Color.getHSBColor(new Random().nextFloat(), new Random().nextFloat(), new Random().nextFloat()); >Я получаю диапазон различных цветов, но поскольку.

При захвате целых чисел Random().nextInt (int) для двух совершенно разных механик (например, бросков атаки и поверхностных анимаций random) есть ли причина использовать отдельные экземпляры Random() для каждого механика? Например, может ли это помочь обеспечить более равномерную дисперсию значений.

Я знаю, что немного поздно для такого ответа, но я не видел, чтобы кто-то еще ставил это.

Как сказал Грег, вы хотите использовать класс Random

но разница, которую я собираюсь сказать, проста: сделайте это:

И все так просто! нет необходимости создавать множество различных поплавков.

Я использовал этот простой и умный способ для создания цвета random в Java,

Используя класс Java Random, вы можете легко создать новый цвет random как таковой:

Я не могу гарантировать, что все они будут красивыми, но они будут random =)

Конечно. Просто создайте цвет, используя значения random RGB. Нравится:

Возможно, вам захочется изменить генерацию чисел random, если вам не нравятся цвета, которые он предлагает. Я бы предположил, что они, как правило, будут довольно темными.

Вам, кажется, нужны светлые random цвета. Не уверен, что именно вы имеете в виду под светом. Но если вы хотите random 'rainbow colors', попробуйте это

Для получения дополнительной информации найдите цветовую модель HSB.

Вот способ получения цвета random:

  • Получите целочисленное представление, которое можно использовать с java.awt.Color или android.graphics.Color
  • Сохраняйте статическую ссылку на Random .

Похожие вопросы:

Итак, я программирую прорыв игры в Java, и у меня уже есть массив с кирпичами, но я хочу дать кирпичу (или рядам кирпичей) random цветов. У меня есть возможность 4 разных цвета: красный, зеленый.

Используя Javascript, как я могу генерировать числа random, которые смещены в ту или иную сторону распределения? Или в идеале точка в пределах диапазона? Для контекста: я создаю UI, который.

Как я могу остановить выбор цвета подряд? Я стараюсь избегать повторения одних и тех же цветов в строке, выбранной из массива. Я пробовал сравнивать, если цвета равны, но не смог пропустить цвет при.

Возможный Дубликат : Простой генератор чисел random C Может ли кто-нибудь опубликовать ссылки, которые вы знаете, которые помогут понять создание пользовательского генератора чисел random в C. Мне.

Я знаю, что это возможный дублированный вопрос. Ruby, генерируйте цвет random hex Мой вопрос несколько иной. Мне нужно знать, как генерировать только светлые цвета random hex, а не темные.

Итак, у меня есть следующий метод генерации random цветов, который я использую в своем приложении: public final Color generateRandomColour() < return Color.getHSBColor(new Random().nextFloat(), new.

При захвате целых чисел Random().nextInt (int) для двух совершенно разных механик (например, бросков атаки и поверхностных анимаций random) есть ли причина использовать отдельные экземпляры Random().

Я пытаюсь создать цвет random, случайным образом генерируя числа для значений R,G и B с помощью генератора чисел random и используя эти значения для создания цвета. Следующий код находится в моем.

Создание генератора чисел random в Java-глядя на num1 и num2, в каких случаях я мог бы использовать любой из этих методов для создания числа random между 1 и 8? Является ли одно более эффективным.

Поэтому прямо сейчас я пытаюсь сделать клон пататапа. Я хочу сделать это так, чтобы каждый раз, когда я нажимаю клавишу, круг уменьшался на 10% в позиции random на экране с цветом random. До сих пор.

Цветовые оттенки получают смешением отдельных пигментов. Например, сочетание красного и желтого дает оранжевый цвет. Однако в компьютерах с цветами все обстоит иначе. Вместо соединения цветовых пигментов смешиваются яркости цветов. На компьютере желтый цвет можно получить, смешав красный с зеленым.

Используя вариации сочетания трех цветов различных интенсивностей, можно получить полную цветовую палитру. Этими цветами являются красный, зеленый и голубой, а подобную цветовую схему обычно принято называть RGB. Интенсивность каждого из трех цветов может принимать 256 различных значений, таким образом, в схеме RGB мы имеем 256*256*256=16,777,216 цветов. В стандартной библиотеке платформы Java 2 для представления цвета в RGB есть специальный класс java.awt.Color.

Класс Color содержит два набора из тринадцати констант, соответствующих наиболее часто используемым цветам. В одном наборе названия всех тринадцати цветов представлены в нижнем регистре (red), а во втором – в верхнем (RED). Первоначально существовал только один набор с именами в нижнем регистре. И только в выпуске Java 2 Standard Edition версии 1.4 был предложен второй набор. В отличие от первого, во втором наборе принцип присваивания константам имен соответствует общепринятым именным соглашениям.

Кроме параметров RGB существует еще один – непрозрачность. Он задает непрозрачность или, иными словами, плотность цвета (его также называют альфа-каналом).

Чем больше значение непрозрачности, тем плотнее цвет. Так же как и установки базовых цветов, параметр непрозрачности может принимать 256 различных значений. Палитра при этом будет состоять уже из 4,294,967,296 цветов. Необходимо помнить, что хотя класс Color поддерживает более четырех миллиардов цветов, с их отображением справятся не все видеокарты. По этой причине рекомендуется ограничить количество цветов используемых в одном подмножестве.

Комбинацию всех возможных цветовых настроек (альфа, красный, зеленый и голубой) можно выразить при помощи переменной типа int. Так как каждый параметр может принимать 256 значений, то для кодирования данных потребуется по 8 бит, итого 4*8 бит=32 бита на каждый цвет (что совпадает с разрядностью типа int). Параметры устанавливаются в следующем порядке: альфа-канал, красный, зеленый, голубой (диапазон значений 0-255).

Цвета задаются различными способами. Как упоминалось ранее, можно использовать имена из библиотеки констант (например, RED, GREEN или BLUE). Кроме этого существуют методы brighter() и darker(), которые соответствующим образом настраивают текущий цвет. Однако наиболее распространен способ, где каждый цвет задается при помощи целых чисел, указывающих на параметры его составляющих (красной, зеленой, голубой и при необходимости непрозрачности). Если значение непрозрачности не указано, она считается равной 100%.

В качестве примера рассмотрим различные способы задания красного цвета. Первые два – константы RED и red. В обоих случаях при отображении данного цвета зеленая и голубая составляющие отсутствуют.

Кроме этого можно вызвать конструктор для класса Color и передать ему значение 255 для красной составляющей и значение 0 для остальных.

И, наконец, вы можете сочетать настройки трех базовых цветов с параметром непрозрачности при помощи еще одного конструктора:

При этом значение составляющей красного цвета помещается во второй байт int. При желании вы можете отдельно задавать значение каждой составляющей следующим образом:

Вместо того чтобы использовать отдельно настройки каждой цветовой составляющей, конструктор Color воспримет все значения как одно (new Color(value)).

Имея в наличие объект Color, можно использовать его для указания цвета экрана, фонового или основного цветов, а также для любых других подобных задач.

Второй механизм управления цветами использует настройки HSB, указывающие на тон (hue), насыщенность (saturation) и яркость цвета (brightness).

Существует также класс java.awt.SystemColor, обеспечивающий доступ к цветам, определенным платформой пользователя. Это позволяет создавать компоненты, цвет которых будет совпадать с цветом соответствующих компонентов системы.

Проверьте полученные знания при помощи нашего интерактивного теста.

Запуск аудио клипов

Java API обеспечивает простую абстракцию для запуска звуковых клипов. Данный процесс напоминает извлечение и отображение картинок. Интерфейс AudioClip используется для представления аудио-файлов. Создавая объект AudioClip при помощи метода getAudioClip или newAduioClip класса Applet, вы тем самым получаете доступ к методам интерфейса AudioClip.

Этими методами являются:

  • loop – запускает аудио клип, непрерывно вызывая объект AudioClip.
  • play – проигрывает полученный аудио клип. При каждом вызове метода клип запускается заново.
  • stop – останавливает проигрывание клипа.

Наиболее популярными форматами, используемыми в приложениях или апплетах, являются WAV, AU и SND.

Далее представлен пример создания объекта AudioClip:

Апплет WhaleSounds демонстрирует создание объекта AudioClip, а также запуск и остановку звука при помощи класса JButtons и соответствующих методов. Для создания данного апплета вам необходимо загрузить содержимое следующих гиперссылок:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class WhaleSounds extends JApplet AudioClip clip;

public void init () clip = getAudioClip ( getCodeBase () , "humpback.au" ) ;
JButton play = new JButton ( "Play" ) ;
JButton stop = new JButton ( "Stop" ) ;
Container pane = getContentPane () ;
pane.setLayout ( new GridLayout ( 2 , 1 )) ;
pane.add ( play ) ;
pane.add ( stop ) ;
play.addActionListener ( new ActionListener () public void actionPerformed ( ActionEvent ae ) clip.play () ;
>
>) ;

stop.addActionListener ( new ActionListener () public void actionPerformed ( ActionEvent ae ) clip.stop () ;
>
>) ;
>
>

После компиляции и запуска апплета вы должны увидеть следующее:

Класс JSlider

Объект Slider (ползунок) позволяет пользователям изменять числовое значение указанного параметра при помощи визуальных средств. При этом устанавливаются ограничители максимума и минимума. Примерами могут служить настройка громкости, яркости цвета, изменение размера объектов и так далее.

Для этого в поставку Java API входит специальный класс, позволяющий разработчикам создавать настраиваемые ползунки в соответствии с конкретными требованиями приложений. Данный класс находится в библиотеке Swing (javax.swing.JSlider).

При помощи ползункового механизма можно отобразить любой диапазон числовых значений, и изменять значение, перемещая указатель между его границами.

Создать объект Slider можно при помощи одного из данных конструкторов:

Создает горизонтальный ползунок в диапазоне от 0 до 100 с начальным значением равным 50.

JSlider(int min, int max)

JSlider(int min, int max, int value)

Создает горизонтальный ползунок с заданными максимальным и минимальным значениями. Если присутствует третий аргумент int, он указывает на начальное значение указателя.

Создает горизонтальный ползунок определенной модели, управляющей минимальным и максимальным значениями, а также текущими значениями и их взаимодействием.

Изменять и устанавливать метки, деления и расположение ползунка на плоскости можно при помощи многочисленных методов класса JSlider. Вот некоторые из них:

Устанавливает минимальное и максимальное значения ползунка. При совместном использовании этих методов можно установить или извлечь диапазон значений ползунка.

Проверяет, отмечены ли на ползунке деления.

Добавить дополнительные функции к ползунку можно, реализовав интерфейс ChangeListener и обеспечив метод stateChanged, указав в них точные инструкции для действий, выполняемых при перемещении ползунка.

В представленной далее программе проиллюстрировано использование конструктора JSlider, а также методов для создания вертикального и горизонтального ползунков. При перемещении указателя ползунка вызывается метод stateChanged, а значение, указывающее на позицию ползунка, отображается в текстовой области внизу экрана.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

public class JSliderExample extends JFrame JSlider jsHorizontal;
JSlider jsVertical;
JTextField jtf1;
JTextField jtf2;

public JSliderExample () // Создать горизонтальный ползунок
// с различными параметрами

jsHorizontal = new JSlider ( JSlider.HORIZONTAL, 0 , 100 , 50 ) ;
jsHorizontal.setMajorTickSpacing ( 20 ) ;
jsHorizontal.setMinorTickSpacing ( 5 ) ;
jsHorizontal.setPaintTicks ( true ) ;
jsHorizontal.setPaintLabels ( true ) ;
jsHorizontal.setForeground ( Color.BLACK ) ;
jsHorizontal.setBorder ( BorderFactory.createEtchedBorder ()) ;
jsHorizontal.addChangeListener ( new JSliderHandler ()) ;

// Создать вертикальный ползунок
// с различными параметрами
jsVertical = new JSlider ( JSlider.VERTICAL, 0 , 40 , 8 ) ;
jsVertical.setMajorTickSpacing ( 10 ) ;
jsVertical.setMinorTickSpacing ( 2 ) ;
jsVertical.setPaintTicks ( true ) ;
jsVertical.setPaintLabels ( true ) ;
jsVertical.setForeground ( Color.BLACK ) ;
jsVertical.setBorder ( BorderFactory.createEtchedBorder ()) ;
jsVertical.addChangeListener ( new JSliderHandler ()) ;

// Создать текстовое поле
// для отображения позиции указателя

jtf1 = new JTextField ( 15 ) ;
jtf2 = new JTextField ( 15 ) ;

jtf1.setEditable ( false ) ;
jtf2.setEditable ( false ) ;

jtf1.setText ( "Horizontal value is " + jsHorizontal.getValue ()) ;
jtf2.setText ( "Vertical value is " + jsVertical.getValue ()) ;

JPanel p1 = new JPanel () ;
p1.setBackground ( Color.WHITE ) ;
p1.add ( jsHorizontal ) ;

JPanel p2 = new JPanel () ;
p2.setBackground ( Color.WHITE ) ;
p2.add ( jtf1 ) ;
p2.add ( jtf2 ) ;

JPanel p3 = new JPanel () ;
p3.setBackground ( Color.WHITE ) ;
p3.add ( jsVertical ) ;

getContentPane () .add ( p1, BorderLayout.CENTER ) ;
getContentPane () .add ( p2, BorderLayout.SOUTH ) ;
getContentPane () .add ( p3, BorderLayout.EAST ) ;

setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;
setBounds ( 300 , 400 , 400 , 300 ) ;
setVisible ( true ) ;
setBackground ( Color.WHITE ) ;
>

class JSliderHandler implements ChangeListener public void stateChanged ( ChangeEvent ce ) jtf1.setText ( "Horizontal value is " + jsHorizontal.getValue ()) ;
jtf2.setText ( "Vertical value is " + jsVertical.getValue ()) ;
>
>

public static void main ( String args []) JSliderExample jse = new JSliderExample () ;
>
>

Класс java.util.Random представляет собой генератор псевдослучайных чисел.

Класс представлен двумя конструкторами

  • Random() — создаёт генератор чисел, использующий уникальное начальное число
  • Random(long seed) — позволяет указать начальное число вручную

Так как класс создаёт псевдослучайное число, то задав начальное число, вы определяете начальную точку случайной последовательности. И будете получать одинаковые случайные последовательности. Чтобы избежать такого совпадения, обычно используют второй конструктор с использованием текущего времени в качестве инициирующего значения.

  • boolean nextBoolean() — возвращает следующее случайное значение типа boolean
  • void nextBytes(byte[] buf) — заполняет массив случайно созданными значениями
  • double nextDouble() — возвращает следующее случайное значение типа double
  • float nextFloat() — возвращает следующее случайное значение типа float
  • synchronized double nextGaussian() — возвращает следующее случайное значение гауссова случайного числа, т.е. значения, центрированное по 0.0 со стандартным отклонением в 1.0 (кривая нормального распределения)
  • int nextInt(int n) — возвращает следующее случайное значение типа int в диапазоне от 0 до n
  • int nextInt() — возвращает следующее случайное значение типа int
  • long nextLong() — возвращает следующее случайное значение типа long
  • synchronized void setSeeD(long seed) — устанавливает начальное значение

Пример для вывода случайного числа.

Случайные числа часто используются в играх. Допустим, мы хотим вывести случайные числа от 1 до 6 при бросании игрального кубика. Попробуем.

При проверке вы заметите две нестыковки. Во-первых, иногда выпадает число 0, которого нет на кубике, а во-вторых никогда не выпадает число 6. Когда вы помещаете число в параметр метода, то это означает, что выпадают числа в диапазоне от 0 до указанного числа, которое в этот диапазон не входит. Если вы будете использовать число 7, то шестёрка станет выпадать, но по-прежнему будет выпадать число 0. Поэтому пример следует немного отредактировать.

Для генерации 10 чисел типа int используйте код:

Генерация в определённом интервале

Нужны случайные числа от 100 до 200? Пишем код.

Случайные цвета

Работать с числами не слишком интересно. Давайте поработаем со цветом. В Android некоторые цвета имеют конкретные названия, но по сути они являются числами типа int, например, красный цвет имеет константу Color.RED. Вам не надо знать, какое число соответствует этому цвету, так как проще понять по его названию.

Щёлкая по кнопке, вы будете менять её цвет случайным образом.

Лотерея "6 из 49"

Сформируем шесть случайных чисел из 49 и занесём их в списочный массив.

SecureRandom

Стандартный класс Random обычно используют для простых задач, не связанных с шифрованием. Для криптографии следует использовать схожий класс java.security.SecureRandom.

Не забывайте, что в классе Math есть метод random(), возвращающий случайное число от 0 до 1 (единица в диапазон не входит).

Генерация случайных чисел

Класс Math библиотеки Java имеет метод random(), который генерирует случайное значение в диапазоне [0,1). Обратите внимание, что данный диапазон не включает 1 и при описании закрывается круглой скобкой. Можно ли предсказать сгенерированное значение? Теоретически возможно, но практически – это очень труднореализуемая задача. А поскольку существует небольшая вероятность предсказывания случайно-сгенерируемого значения, то такие числа принято называть не случайными, а псевдослучайными.

Чтобы получить псевдо-случайное число в определенном диапазоне необходимо значение метода random() умножить на величину диапазона значений. Например, необходимо генерировать значение в диапазоне от min до max. В этом случае можно использовать следующий код :

Допустим, что необходимо получить значение в диапазоне [1,10), где min=1, max=10 (10 исключительно)

Алгоритм работает следующим образом : диапазон [0;1) умножается на 9=(10-1), соответственно получаем :

  • нижняя граница: 0*9 = 0;
  • верхняя граница: 1*9 = 9,

получаем диапазон [0,9), к которому добавляем min=1. В результате имеем :

  • нижняя граница: 0 + 1 = 1;
  • верхняя граница: 9 + 1 = 10.

После подстановки значений в выражение, получим :

Диапазон [-10, 10)

Чтобы получить псевдослучайное число в диапазоне от -10 до 10 (исключительно), необходимо значение Math.random() умножить на 20 и вычесть 10, как это представлено в следующем примере :

Генерирование целочисленных псевдослучайных значений

Класс Random

В качестве генератора псевдослучайных чисел можно также использовать класс java.util.Random, имеющий два конструктора :

Поскольку Random создаёт псевдослучайное число, то определив начальное число, устанавливается начальная точка случайной последовательности, способствующая получению одинаковых случайных последовательностей. Чтобы избежать такого совпадения, обычно применяют второй конструктор с использованием в качестве инициирующего значения текущего времени. В таблице представлены наиболее часто используемые методы генератора Random :

Метод Описание
boolean nextBoolean() получение следующего случайного значения типа boolean
double nextDouble() получение следующего случайного значения типа double
float nextFloat() получение следующего случайного значения типа float
int nextInt() получение следующего случайного значения типа int
int nextInt(int n) получение следующего случайного значения типа int в диапазоне от 0 до n
long nextLong() получение следующего случайного значения типа long
void nextBytes(byte[] buf) формирование массива из случайно генерируемых значений

Пример получения псевдослучайного целочисленного значения с использованием класса Random :

С классом Random алгоритм получения псевдослучайного числа такой же, как и у метода random класса Math. Допустим, что нам необходимо получить случайное число в диапазоне [5,100], 100 включительно. В этом случае код может выглядеть следующим образом :

Класс SecureRandom

Для криптографии следует применять класс SecureRandom, использующий криптографически сильный генератор случайных чисел (random number generator RNG).

В следующем примере формируется массив псевдослучайных значений типа byte :

Этот же массив можно сформировать методом generateSeed :

Пример использования SecureRandom представлен на странице Симметричного шифрования.

Java: Генерация случайных целых чисел в диапазоне

Вступление

В этом уроке мы рассмотрим как генерировать случайные целые числа в определенном диапазоне в Java .

Мы рассмотрим несколько подходов, включая основную Java и сторонние решения:

  • Случайные.ints()
  • Случайный.nextInt()
  • Математика.случайная()
  • SecureRandom.nextInt()
  • ThreadLocalRandom.nextInt()
  • SplittableRandom.ints()

Примечание: Для каждого подхода мы рассмотрим как сгенерировать одно случайное целое число , а также как сгенерировать последовательность случайных целых чисел .

Все эти методы являются включающими нижнюю границу и исключающими верхнюю границу .

Случайные.ints()

Мы начинаем с Random.ints () , который был добавлен в класс Random в Java 8 именно для этой цели. Java изначально не имела полностью интуитивно понятного встроенного решения для этой задачи.

Метод ints() возвращает последовательность случайных значений в виде IntStream . Будучи реализацией потока , она неограниченна:

Это неограниченный поток , который будет генерировать любое значение из целого числа.МИНИМАЛЬНОЕ ЗНАЧЕНИЕ в Целое число.МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ . Однако вы можете указать диапазон , а также количество элементов , которые вы хотели бы сгенерировать.

Перед сбором IntStream нам придется поместить его в коробку с помощью метода boxed () , который возвращает поток , состоящий из элементов IntStream , упакованных в Целое число . Затем мы запускаем collect() в возвращаемом потоке, а не в исходном.

Выполнение этого кода приводит к:

Чтобы сгенерировать одно случайное целое число, вы можете просто настроить первый аргумент метода init() или использовать методы findFirst() и getAsInt () , чтобы извлечь его из IntStream :

Это приводит к случайному целому числу в диапазоне между 1..10 (второй аргумент является исключительным):

Случайный.nextInt()

Это приводит к случайному целому числу в диапазоне между min и max :

Для создания такой последовательности нам потребуется вызвать метод несколько раз:

Это Список -ограниченное воспроизведение функции Random.ints () , которая просто возвращает список случайно сгенерированных целых чисел в диапазоне заданного размера:

Запуск этого кода приведет к чему-то вроде:

SecureRandom.nextInt()

Класс SecureRandom является альтернативой классическому классу Random , но обеспечивает криптографически надежный генератор случайных чисел. Случайный внутренне полагается на системные часы для генерации начальных чисел, что не является по-настоящему случайным.

С другой стороны, SecureRandom берет гораздо больше случайных данных из среды, чтобы генерировать гораздо более случайное начальное значение.

Если вас интересует криптографическая безопасность, вы можете вместо этого использовать SecureRandom , который ведет себя примерно так же, как Random с точки зрения разработчика:

Что приводит к случайному целому числу в диапазоне между мин и макс :

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

И если вы хотите генерировать последовательности, можно создать вспомогательный метод:

Которые вы можете использовать в качестве:

И что приводит к:

Математика.случайная()

Класс Math предоставляет нам отличные вспомогательные методы, связанные с математикой. Одним из них является метод Math.random () , который возвращает случайное значение в диапазоне 0..1 . Как правило, он используется для генерации случайных значений процентиля.

Хотя этот подход еще менее интуитивен, чем предыдущий. Выполнение этого кода приводит к чему-то вроде:

Если вы хотите работать с последовательностью, мы создадим вспомогательный метод для добавления каждого сгенерированного значения в список:

И тогда мы можем назвать это так:

ThreadLocalRandom.nextInt()

Если вы работаете в многопоточной среде, класс ThreadLocalRandom предназначен для использования в качестве потокобезопасного эквивалента Random . К счастью, он предлагает метод nextInt () с как верхней, так и нижней границей:

Как обычно, нижняя граница включена, в то время как верхняя граница отсутствует:

Аналогично, вы можете создать вспомогательную функцию для создания последовательности этих:

Которые вы можете использовать в качестве:

SplittableRandom.ints()

Менее известным классом в Java API является класс SplittableRandom , который используется в качестве генератора псевдослучайных значений. Как следует из названия, он разбивается и работает параллельно, и на самом деле используется только тогда, когда у вас есть задачи, которые можно снова разделить на более мелкие подзадачи.

Стоит отметить, что этот класс также основан на небезопасной генерации семян-если вы ищете безопасную генерацию семян, используйте SecureRandom .

Класс предлагает метод init () , который, с нашей точки зрения, работает так же, как Random.ints() :

И, если вы хотите сгенерировать только одно случайное число, вы можете отказаться от коллектора и использовать findFirst() с getAsInt() :

Вывод

В этом уроке мы подробно рассмотрели как генерировать случайные целые числа в диапазоне в Java .

Мы рассмотрели новейший и наиболее полезный метод, а также некоторые другие популярные методы выполнения этой задачи. Большинство подходов основаны на Случайных или Случайных эквивалентных классах, используемых для более конкретных контекстов.

Цвет, как и все в Java, – объект определенного класса, а именно, класса color. Основу класса составляют семь конструкторов цвета. Самый простой конструктор:

…создает цвет, получающийся как смесь красной red, зеленой green и синей blue составляющих. Эта цветовая модель называется RGB. Каждая составляющая меняется от 0 (отсутствие составляющей) до 255 (полная интенсивность этой составляющей). Например:

…определяют чистый ярко-красный pureRed и чистый ярко-зеленый pureGreen цвета.

Во втором конструкторе интенсивность составляющих можно изменять более гладко вещественными числами от 0.0 (отсутствие составляющей) до 1.0 (полная интенсивность составляющей):

Здесь красная составляющая задана с интенсивностью 0x8F, зеленая – 0x48, синяя – 0xFF.

Следующие три конструктора:

…вводят четвертую составляющую цвета, так называемую "альфу", определяющую прозрачность цвета. Эта составляющая проявляет себя при наложении одного цвета на другой. Если альфа равна 255 или 1.0, то цвет совершенно непрозрачен, предыдущий цвет не просвечивает сквозь него. Если альфа равна 0 или 0.0, то цвет абсолютно прозрачен, для каждого пиксела виден только предыдущий цвет.

Последний из этих конструкторов учитывает составляющую альфа, находящуюся в битах 24-31, если параметр hasAipha равен true. Если же hasAipha равно false, то составляющая альфа считается равной 255, независимо от того, что записано в старших битах параметра rgb.

Первые три конструктора создают непрозрачный цвет с альфой, равной 255 или 1.0.

…позволяет создавать цвет не только в цветовой модели (color model) RGB, но и в других моделях: CMYK, HSB, CIEXYZ, определенных объектом класса ColorSpace.

Для создания цвета в модели HSB можно воспользоваться статическим методом:

Если нет необходимости тщательно подбирать цвета, то можно просто воспользоваться одной из тринадцати статических констант типа color, имеющихся в классе color. Вопреки соглашению "Code Conventions" они записываются строчными буквами: black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow.

Методы класса Color позволяют получить составляющие текущего цвета: getRed(), getGreen(), getBlue(), getAlpha(), getRGB(), getColorSpace (), getComponents ().

Два метода создают более яркий brighter() и более темный darker () цвета по сравнению с текущим цветом. Они полезны, если надо выделить активный компонент или, наоборот, показать неактивный компонент бледнее остальных компонентов.

Два статических метода возвращают цвет, преобразованный из цветовой модели RGB в HSB и обратно:

Читайте также: