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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2011, 07:23   #1
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию Случайное число из отрезка попадающее в интервал

Здравствуйте! Подскажите по коду правильно он оформлен по задаче!

Задача!
Создать программу, которая будет проверять попало ли случайно
выбранное из отрезка [5;155] целое число в интервал (35;150)
и сообщать результат на экран
Код:
public class Test {
    public static void main(String args[]){
       final int a = 5;
        final int b = 155;
         int c = (int) (Math.random()*a + Math.random()*b);
       if(c >= 35 && c <= 150){
        System.out.println("Число " + c + " содержится в интервале (35,150)");
        }
        else{
            System.out.println("Число " + c + " не содержится в интервале (35,150)");
         }
    }
}
turtles вне форума Ответить с цитированием
Старый 31.08.2011, 08:14   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Случайное число формируйте так:
Код:
int c = (int)(a + Math.random() * (b - a));
2.
Код:
if (c > 35 && c < 150)
т.к. у вас (35;150), а не [35;150]
BOBAH13 вне форума Ответить с цитированием
Старый 31.08.2011, 08:16   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну опять тоже самое...
получение случайного целого числа в интервале [5;155] у Вас в коде реализовано НЕВЕРНО!
Цитата:
Код:
int c = (int) (Math.random()*a + Math.random()*b);
смотрите, данным кодом Вы получаете числа на интервале [0; a+b[
т.е. от нуля до 160! Вам же не это надо?!
а нужно Вам так получать:
Код:
int c = (int) (Math.random()*(b-a+1)) + a;
почему так - я "разжевывал" в Вашей предыдущей теме!

ну и последнее. о проверке попадания в диапазон.
На мой взгляд у Вас тут правильно написано.
Единственное, я никак не могу понять. Вы иногда границы интервала пишете в круглых скобках, иногда - в квадратных... Это, в данном случае, у Вас означает одно и тоже?! проверьте. я не исключаю, что круглые скобки означают НЕ включение границ в состав интервала (то, что в моё время обозначалось квадратной скобокой "повёрнутой" в сторону от интервала.
Например, [2;10[ - (от 2 до 10, включая 2, но не включая 10)
или
]2,5[ - (от 2 до 5 не включая 2 и не включая 5)
и т.д....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.08.2011, 08:59   #4
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию

Спасибо за ответ!!
turtles вне форума Ответить с цитированием
Старый 31.08.2011, 09:19   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пожалуйста.

И ещё раз, если круглые скобки означают "не включение" границ интервала,
тогда BOBAH13 абсолютно прав,
и проверять вхождение числа в интервал надо строгими равенствами: if (c > 35 && c < 150)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Случайное число mactepmac Общие вопросы Delphi 5 22.06.2011 09:58
Случайное число rommster Общие вопросы C/C++ 13 09.10.2010 15:11
Случайное число. Alex Cones Свободное общение 27 06.06.2010 09:54
случайное число Дініс Общие вопросы C/C++ 3 07.10.2009 23:03
Случайное число Altera Общие вопросы Delphi 4 05.02.2008 22:22