Вниз  Обучение
Тема закрыта
- 25.07.2011 / 17:11
Zvers
  Пользователь

Zvers 
Сейчас: Offline
kiriman, Вот и спалился!
- 3.08.2011 / 22:08
Medbat
  Пользователь

Medbat 
Сейчас: Offline
Всем привет. Начал учить яву, добрался до старого доброго рандома. Узнал, что делается он так:
Random rand = new Random();
lol=rand.nextInt(11);
Это мы срандомим от 0 до 10. А если надо от 10 до 36 например? По привычке из турбо паскаля я написал бы так:
lol=rand.nextInt(27)+10;
В теме про хитрости в яваме нашёл хитрый способ с использованием побайтового смещения. Какой способ лучше?
- 3.08.2011 / 22:12
NaruTREY
  Пользователь

NaruTREY 
Сейчас: Offline
Medbat, по-моему лучше первый... Он более ясный.
__________________
 Чёрные усы кричает этот свисть
- 3.08.2011 / 22:13
Zvers
  Пользователь

Zvers 
Сейчас: Offline
NaruTREY, :-D
Надо будет провести тесты на скорость
- 3.08.2011 / 22:17
Medbat
  Пользователь

Medbat 
Сейчас: Offline
Я и говорю, первый способ проще гораздо. Я правда еще не тестировал их, но вот Реми упорно говорит что второй придумали более умные люди и что их способ лучше
- 3.08.2011 / 22:19
REM!
  Модератор загрузок

REM! 
Сейчас: Offline
дядя Федор, а стучать нехорошо ;D

попробовал бы, и увидел, что лучше рандомит
- 3.08.2011 / 22:23
Zvers
  Пользователь

Zvers 
Сейчас: Offline
Medbat, Многие люди повторяются за соседом.. Без каких-либо тестов или доков говорить ничего не буду. Сам юзаю метод со смещением и пока никаких жалоб не было
- 3.08.2011 / 22:43
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
  1. public static int random(int min, int max) {
  2.    return min + ((rnd.nextInt() >>> 1)%(max-min));
  3. }
Объясняю. В MIDP1.0 нет метода nextInt(int), есть nextInt().
nextInt() выводит случайные значения от -2147483648 до 2147483647, то есть может незаметно прокрасться минус.
nextInt(int) выводит случайные значения от 0 до указанного числа, то есть минуса тут никак нет и не будет.
Поэтому, чтобы избавиться от минуса в MIDP1.0 мы обнуляем правый бит полученного числа, этим самым мы избавляемся от минуса. И этот метод (rnd.nextInt() >>> 1) является универсальным, как для MIDP1.0, так и для MIDP2.0!
Если же вы юзаете исключительно MIDP2.0, то конечно же можно воспользоваться методом nextInt(int):
  1. public static int random(int min, int max) {
  2.    return min + rnd.nextInt(max-min);
  3. }

__________________
 let live

Изменено aNNiMON (3.08 / 22:44) (всего 1 раз)
- 3.08.2011 / 22:49
Zvers
  Пользователь

Zvers 
Сейчас: Offline
aNNiMON, Сейчас MIDP 2.0 можно сказать редкость, а MIDP 1.0 и подавно! Не думаю, что разрабы на него ещё делают что-либо
- 4.08.2011 / 11:31
Medbat
  Пользователь

Medbat 
Сейчас: Offline
aNNiMON, спасибо за пояснение
Наверх  Всего сообщений: 1086
Фильтровать сообщения
Поиск по теме
Файлы топика (62)