Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2017, 22:15   #1
sameuser
Пользователь
 
Регистрация: 22.12.2016
Сообщений: 22
По умолчанию Нужен простейший способ получить Random между 1 и -1

Бьюсь уже полчаса и не могу найти минимальный вариант для получения рандомного числа из 2 чисел: 1 и -1.

Random spawnCoord = new Random();
)spawnCoord.nextInt(2) - 1)

Вроде бы все окей, но появляется НОЛЬ! Третьим вариантом.. А мне нужно только 2 варианта: 1 и -1.

Как получить одного из них минимальным количеством кода? Не нужны классы дополнительные и длинные функции, этот фрагмент используется в выражении (нужно подвинуться на 1 клетку влево или вправо по координатной оси).
sameuser вне форума Ответить с цитированием
Старый 06.09.2017, 22:21   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Можно просто if/switch/тернарный условный оператор использовать
nextInt(2) == 1 ? 1 : -1;
Цитата:
Сообщение от sameuser Посмотреть сообщение
Не нужны классы дополнительные и длинные функции, этот фрагмент используется в выражении
И что? Что мешает вызвать функцию в выражении?

x += getRandomShift();
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2017, 22:28   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

(0,1)*2-1=(-1,1)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.09.2017, 22:51   #4
sameuser
Пользователь
 
Регистрация: 22.12.2016
Сообщений: 22
По умолчанию

Тернарный оператор подошел, всей окей. Спасибо!

> И что? Что мешает вызвать функцию в выражении?
Хотелось избежать громоздкости

> x += getRandomShift();
Это я не нашел в яве.. Наверное, из другого языка?

> (0,1)*2-1=(-1,1)
Этот пример я не очень хорошо понял. Воспользовался тернарным оператором.
Метод nextInt вроде не принимает 2 аргумента..
sameuser вне форума Ответить с цитированием
Старый 06.09.2017, 23:15   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от sameuser Посмотреть сообщение
Это я не нашел в яве.. Наверное, из другого языка?
это функция, которую вы можете написать.
Цитата:
Сообщение от sameuser Посмотреть сообщение
Метод nextInt вроде не принимает 2 аргумента..
прочитайте в документации что он делает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.09.2017, 07:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
> (0,1)*2-1=(-1,1)
Этот пример я не очень хорошо понял
Чего не понятного? Рандомно получаешь 0 или 1, умножаешь на 2 и вычитаешь 1 - вот и -1 и 1. Аналогично можно получить любую пару целых чисел - растяжение и сдвиг
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самый быстрый способ получить размер файла xexxex Win Api 12 17.04.2015 01:42
Универсальный способ получить данные о системе/компьютере Dennis777 Общие вопросы Delphi 3 15.11.2014 15:04
нужен простейший транслятор с паскаля ни сишник Yevgeniya1979 Фриланс 30 14.10.2010 17:26
Самый быстрый способ получить изображение в заданном прямоугольнике? TwiX Мультимедиа в Delphi 4 04.04.2010 10:08
Программа Magic Screenshot - простейший способ обменяться скриншотами roverspam Софт 0 17.09.2008 23:07