Работа со случайными числами

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

В ближайших темах мы начнем изучение и использование так называемых "команд повторения" (циклов) – вот тогда мы и сможем в полной мере оценить использование функции-генератора случайных чисел.

Как уже было сказано, для работы со случайными числами в языке Java используется функция Math.random(), которая выбирает случайным образом одну из десятичных дробей из диапазона от 0 (включая) до 1 (не включая).

Для того, чтобы увеличить диапазон выбора чисел, умножают функцию на соответствующее значение: например, 60*Math.random() выбирает случайным образом одну из десятичных дробей из диапазона от 0 (включая) до 60 (не включая).

Для того, чтобы "сдвинуть" диапазон выбора чисел, добавляют к функции число (положительное или отрицательное), устанавливающее диапазон сдвига: например, 60*Math.random()+10 выбирает случайным образом одну из десятичных дробей из диапазона от 10 (включая) до 70 (не включая).

Для того, чтобы использовать эту функцию для выбора целых чисел, производят действие "преобразования типа": перед заключенным в скобки выражением ставят в скобках указание на тип, в который надо произвести преобразование – в нашем случае, для целых чисел, это (int).

Таким образом, если общий вид команды для выбора случайных чисел выглядит, например, следующим образом:

x=-20 + (int)(75*Math.random())

то ее смысл – "в переменную х заносится случайным образом выбранное целое число, одно из 75-и чисел, начиная с -20 и вверх" – или "в переменную х заносится случайным образом выбранное целое число из диапазона от -20 до +54".

Общая формула для генерации случайного целого числа x, такого, что a≤ x ≤ b:

x= a+ (int)(Math.random()*(b-a+1))

Например, для генерации случайного целого положительного двузначного числа (a=10; b=99) мы получаем:

x= 10+ (int)(Math.random()*(99-10+1)) или x= 10+ (int)(Math.random()*90)

Обратите внимание, что 90 – это количество двузначных положительных чисел (количество вариантов для генерации случайного числа), а 10 – значение минимального варианта.


Раздел №15 (часть 1).
Команды повтора – Цикл for

В большинстве классов (программ) есть необходимость в многократном выполнении каких-то команд, действий, блоков.

Приведем несколько примеров таких действий:

· необходимо вывести на экран серию из 100 чисел;

· подсчитать сумму 250 элементов арифметической последовательности;

· принять с клавиатуры 25 значений и найти наибольшее из них;

· и так далее…

Разумеется, писать для каждой из таких задач код из последовательных команд – не только утомительно, но и совершенно неразумно: мало того, что количество строк кода становится слишком большим при слишком простой цели, так еще и коды содержат фактически одни и те же, повторяющиеся снова и снова команды.

Вот как раз для решения такого рода проблем ("много строк фактически повторяющегося кода") в каждом языке, в том числе и в Java, существует инструмент под названием "цикл". С помощью цикла можно написать класс таким образом, чтобы те действия, которые необходимо повторять снова и снова, были записаны один раз, но внутри повторяющегося фрагмента (в этом случае говорят – внутри тела цикла).

Кстати, в компьютерных науках циклы называются "инструментом повторного исполнения" – с их помощью можно писать классы по принципу "мало написано – много делается".

В Java существует несколько видов циклов – и мы начнем знакомиться с ними с цикла, который называется "цикл for". Он также известен как "цикл с параметром", "цикл с заранее известным числом повторов".

Следует иметь в виду, что в языке Java цикл for является чрезвычайно мощным инструментом, но в рамках данного курса мы его используем достаточно "классически", ограничиваясь только частью его возможностей.

Сегодня в языке Java цикл for получил массу дополнительных возможностей и это, с одной стороны, сделало его гораздо более сильным инструментом, но, при этом, и более сложным; с другой – его по-прежнему можно использовать в стандартном, классическом виде.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: