2016-02-10 2 views
0

Я передал задание недавно, для моего курса «Информатика». В нем я использовал метод Random для Math.random() для генерации случайных чисел. Мой лектор указал на это, заявив, что это «ненужное осложнение», и что я должен избегать импорта классов, когда это абсолютно не требуется.Использует ли случайный класс «излишне усложнять» вещи?

У меня нет ничего против нее за это, и я согласен с тем, что это ее предпочтительный метод, который имеет свои достоинства, но я был бы признателен за мнение более широкой (возможно, более опытной) группы - поскольку Math.random() все равно вызывает класс Random, и (afaik) создает новый случайный объект каждый раз, когда вызывается метод, не имеет смысла просто вырезать посредника?

Благодаря

+0

Только человек, который никогда не использовал его раньше, мог бы так сказать –

+0

Зависит от того, что вы пытаетесь сделать. Какова была настоящая задача? –

+0

@ Andy Я думаю, что в этом случае он генерировал объекты случайного размера в GUI, поэтому случайные числа использовались для сторон, размеров и цветов. Разумный простой –

ответ

8

Math.random() действительно использует Random, но он использует один экземпляр. Однако, поскольку Math.random() эквивалентен Random.nextDouble();, который обычно не очень полезен, было бы глупо использовать его вместо класса Random, в котором есть множество удобных методов, которые делают ваше намерение понятным и ошибки менее вероятны, как показано в следующем фрагменте ,

int x = (int)(Math.random() * 100); // Without parentheses you'll always get 0 
int y = rnd.nextInt(100); 

Я подозреваю, что ваш преподаватель имеет сильную теоретическую знания о программировании.

+1

Хорошая точка зрения на удобочитаемость – assylias

-1

Я не удивлюсь, если этот вопрос станет закрытым для того, чтобы быть слишком субъективным. Но все равно -

Я бы сказал, это зависит от контекста. Была ли ваша «ошибка» использования случайной причины плохой производительности, нечитаемого кода или чего-либо вообще? Если нет, то я думаю, что все в порядке.

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

1

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

Смежные вопросы