25.07.2011 / 17:11 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| kiriman, Вот и спалился!
|
3.08.2011 / 22:08 | |
Medbat Пользователь Сейчас: Offline
Имя: Фёдор Откуда: Обнинск Регистрация: 05.07.2011
| Всем привет. Начал учить яву, добрался до старого доброго рандома. Узнал, что делается он так: Random rand = new Random(); lol=rand.nextInt(11); Это мы срандомим от 0 до 10. А если надо от 10 до 36 например? По привычке из турбо паскаля я написал бы так: lol=rand.nextInt(27)+10; В теме про хитрости в яваме нашёл хитрый способ с использованием побайтового смещения. Какой способ лучше?
|
3.08.2011 / 22:12 | |
NaruTREY Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Medbat, по-моему лучше первый... Он более ясный.
__________________
Чёрные усы кричает этот свисть |
3.08.2011 / 22:13 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| NaruTREY, Надо будет провести тесты на скорость |
3.08.2011 / 22:17 | |
Medbat Пользователь Сейчас: Offline
Имя: Фёдор Откуда: Обнинск Регистрация: 05.07.2011
| Я и говорю, первый способ проще гораздо. Я правда еще не тестировал их, но вот Реми упорно говорит что второй придумали более умные люди и что их способ лучше
|
3.08.2011 / 22:19 | |
REM! Модератор загрузок Сейчас: Offline
Имя: Remi Регистрация: 27.09.2010
| дядя Федор, а стучать нехорошо ;D
попробовал бы, и увидел, что лучше рандомит
|
3.08.2011 / 22:23 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| Medbat, Многие люди повторяются за соседом.. Без каких-либо тестов или доков говорить ничего не буду. Сам юзаю метод со смещением и пока никаких жалоб не было
|
3.08.2011 / 22:43 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| public static int random(int min, int max) {
return min + ((rnd.nextInt() >>> 1)%(max-min));
}
Объясняю. В MIDP1.0 нет метода nextInt(int), есть nextInt(). nextInt() выводит случайные значения от -2147483648 до 2147483647, то есть может незаметно прокрасться минус. nextInt(int) выводит случайные значения от 0 до указанного числа, то есть минуса тут никак нет и не будет. Поэтому, чтобы избавиться от минуса в MIDP1.0 мы обнуляем правый бит полученного числа, этим самым мы избавляемся от минуса. И этот метод (rnd.nextInt() >>> 1) является универсальным, как для MIDP1.0, так и для MIDP2.0! Если же вы юзаете исключительно MIDP2.0, то конечно же можно воспользоваться методом nextInt(int): public static int random(int min, int max) {
return min + rnd.nextInt(max-min);
}
__________________
let live Изменено aNNiMON (3.08 / 22:44) (всего 1 раз) |
3.08.2011 / 22:49 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| aNNiMON, Сейчас MIDP 2.0 можно сказать редкость, а MIDP 1.0 и подавно! Не думаю, что разрабы на него ещё делают что-либо
|
4.08.2011 / 11:31 | |
Medbat Пользователь Сейчас: Offline
Имя: Фёдор Откуда: Обнинск Регистрация: 05.07.2011
| aNNiMON, спасибо за пояснение
|