последний блин, который вы съедите, — это первый, который был
приготовлен. На сленге программистов этот способ называется
«последним вошел, первым вышел», английская аббревиатура LIFO
(last in, fi rst out). Есть и альтернативный подход — «первым вошел,
первым вышел», аббревиатура FIFO (fi rst in, fi rst out). Его также
называют очередью, поскольку таким же образом устроены оче-
реди — первый человек, вставший в очередь, будет первым, кото-
рого обслужат.
64 Часть I. Основы
Случайный выбор
Используя массивы, можно написать программу, которая выдает случай-
ные варианты из заданного списка (наподобие «шара судьбы»). Однако
сначала нужно разобраться, откуда нам брать случайные числа.
Использование Math.random()
Случайные числа можно генерировать с помощью специального метода
Math.random(), который при каждом вызове возвращает случайное Math random —
число от 0 до 1:
случайное
число
Math.random();
0.8945409457664937
Math.random();
0.3697543195448816
Math.random();
0.48314980138093233
Важно помнить, что Math.random() всегда возвращает число
меньше 1, то есть никогда не возвращает собственно 1.
Если вам нужно число побольше, просто умножьте полученное из ме-
тода Math.random() значение на подходящий коэффициент. Например,
если нужно случайное число от 0 до 10, умножьте Math.random() на 10:
Math.random() * 10;
7.648027329705656
Math.random() * 10;
9.7565904534421861
Math.random() * 10;
0.21483442978933454
Округление с помощью Math.fl oor()
И все же эти случайные значения нельзя использовать как индексы
в массиве, поскольку индексы должны быть целыми числами, а не деся-
тичными дробями. Чтобы исправить этот недостаток, нужен метод
Math.fl oor(), округляющий число до ближайшего снизу целого значе-
Math floor —
ния (по сути, он просто отбрасывает все знаки после запятой).
целая часть
числа
Math.floor(3.7463463);
3
Math.floor(9.9999);
9
Math.floor(0.793423451963426);
0
3. Массивы 65
Давайте используем оба метода, чтобы получить случайный индекс.
Нужно лишь умножить Math.random() на длину массива и затем округ-
лить полученное число методом Math.fl oor(). Например, если в массиве
четыре элемента, это можно сделать так:
Math.floor(Math.random() * 4);
2 // может выпасть 0, 1, 2 или 3
При каждом запуске этот код будет возвращать случайное число от 0
до 3 (включая 0 и 3). Поскольку Math.random() всегда возвращает значе-
ние меньше 1, Math.random() * 4 никогда не вернет 4 или большее число.
Используя это случайное число как индекс, можно получить случай-
ный элемент массива:
var randomWords = ["Взрыв", "Пещера", "Принцесса", "Карандаш"]; Random
var randomIndex = Math.floor(Math.random() * 4);
words —
randomWords[randomIndex];
случайные
"Пещера"
слова
Random index —
случайный
С помощью Math.fl oor(Math.random() * 4); мы получили случай-
индекс
ное число от 0 до 3. Сохранив это число в переменной randomIndex, мы
использовали его как индекс для получения строки из массива randomWords.
В сущности, можно сделать этот код короче, избавившись от пере-
менной randomIndex:
randomWords[Math.floor(Math.random() * 4)];
"Принцесса"
Программа случайного выбора вариантов
Теперь давайте создадим массив с фразами, чтобы случайным образом
выбирать их с помощью написанного ранее кода. Это и будет наш ком-
пьютерный «шар судьбы»! В комментариях указаны примеры вопросов,
которые можно задать нашей программе.
var phrases = [
Phrases —
"Звучит неплохо",
фразы
"Да, это определенно надо сделать",
"Не думаю, что это хорошая идея",
"Может, не сегодня?",
"Компьютер говорит нет"
];
// Мне выпить еще молочного коктейля?
66 Часть I. Основы
phrases[Math.floor(Math.random() * 5)];
"Не думаю, что это хорошая идея"
// Мне пора делать домашнюю работу?
phrases[Math.floor(Math.random() * 5)];
"Может, не сегодня?”
Мы создали массив phrases, в котором хранятся различные советы.
Теперь, придумав вопрос, можно запросить случайный элемент из мас-
сива phrases, и полученный совет поможет принять решение!
Обратите внимание: поскольку в массиве с советами пять элементов,
мы умножаем Math.random() на 5. Таким образом, мы всегда получим
одно из пяти значений индекса: 0, 1, 2, 3 или 4.
Генератор случайных дразнилок
Можно усовершенствовать код выбора вариантов, создав программу,
которая при каждом запуске генерирует случайную дразнилку!
var randomBodyParts = ["глаз", "нос", "череп"];
Random
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
body part —
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"]; случайная
// Выбор случайной части тела из массива randomBodyParts:
Читать дальше
Конец ознакомительного отрывка
Купить книгу