Ключевой момент: вы можете использовать Math.random() для получения величины double между 0.0 and 1.0, исключая 1.0.
Предположим вы хотите создать программу для первоклашек, чтобы они могли практиковаться в вычитании. Программа генерирует два случайных числа в одну цифру, number1 и number2, с условием number1 >= number2 и отображает школьнику вопрос вроде такого: «Сколько будет 9 — 2?». После ввода школьником ответа, программа отображает сообщение о том, является ли он правильным.
Предыдущие программы генерировали случайные числа с использованием System.currentTimeMillis(). Более лучшим подходом является использование метода random() из класса Math. Вызов этого метода возвращает случайную величину двойной точности d, такую, что 0.0 ≤ d < 1.0. Т.е. (int)(Math.random() *10) возвращает случайное целое число в одну цифру (т.е. число между 0 и 9).
Программа может работать следующим образом:
- Сгенерируйте два однозначных целых числа number1 и number2.
- Если number1 < number2, поменять местами number1 с number2.
- Попросите ученика ответить: «Сколько будет number1 – number2?»
- Проверить ответ ученика и показать, является ли он правильным.
Полный листинг программы:
import java.util.Scanner; public class SubtractionQuiz { public static void main(String[] args) { // 1. Генерация двух однозначных числа int number1 = (int) (Math.random() * 10); int number2 = (int) (Math.random() * 10); // 2. Если number1 < number2, поменять number1 с number2 if (number1 < number2) { int temp = number1; number1 = number2; number2 = temp; } // 3. Задать школьнику вопрос ”Сколько будет number1 – number2?” System.out.print ("Сколько будет " + number1 + " - " + number2 + "? "); Scanner input = new Scanner(System.in); int answer = input.nextInt(); // 4. Оценить ответ и вывести результат if (number1 - number2 == answer) { System.out.println("Ты прав!"); } else { System.out.println("Твой ответ неверен."); System.out.println(number1 + " - " + number2 + " должно быть " + (number1 - number2)); } } }
Для перемены местами двух значений number1 и number2 используется временная величина temp (строка 11), чтобы сначала сохранить значение number1. Значение number2 присваивается number1 (строка 12), а значение temp присваивается number2 (строка 13).
Проверь себя:
- Что из следующего возможно получить вызывая Math.random()?
323.4, 0.5, 34, 1.0, 0.0, 0.234
a. Как бы вы сгенерировали случайное число i так, чтобы 0 ≤ i < 20?
b. Как бы вы сгенерировали случайное число i так, чтобы 10 ≤ i < 20?
c. Как бы вы сгенерировали случайное число i так, чтобы 10 ≤ i ≤ 50?
d. Напишите выражение, которое случайным образом возвращает 0 или 1.