Генерация случайных чисел в Google Sheets

Введение
Часто в рабочих таблицах требуется набор случайных чисел: для тестовых данных, выборок, симуляций или проверок формул. Вручную заполнять ячейки — долго и рискованно. Google Sheets предлагает встроенные функции для автоматической генерации случайных чисел. В этой статье подробно разберём варианты, практические приёмы, ограничения и готовые решения для разных задач.
Основные функции: RAND и RANDBETWEEN
Функция RAND возвращает случайное десятичное число в диапазоне от 0 включительно до 1 не включая. Синтаксис очень простой:
=RAND()У функции нет аргументов — если внутри скобок что-то указать, формула вернёт ошибку #N/A. Обратите внимание: RAND — volatile-функция. Это значит, что её значение пересчитывается при каждом изменении листа или перезагрузке вкладки браузера.
RANDBETWEEN генерирует случайное целое число в заданном диапазоне. Синтаксис:
=RANDBETWEEN(lower, upper)- lower — нижняя граница (целое число или ссылка на ячейку). Значение будет больше или равно lower.
- upper — верхняя граница (целое число или ссылка на ячейку). Значение будет меньше или равно upper.
Важно: оба аргумента должны быть целыми, и lower < upper.
Ключевые отличия между RAND и RANDBETWEEN
- RAND возвращает десятичные значения (плавающая запятая); RANDBETWEEN возвращает целые числа.
- RAND не принимает аргументов; RANDBETWEEN требует две границы.
- RAND даёт равномерное распределение в [0, 1), RANDBETWEEN — равномерное распределение по целым числам в указанном диапазоне.
- При ограниченных малых диапазонах RANDBETWEEN с большей вероятностью даст повторяющиеся значения.
Генерация случайного числа между двумя значениями
Чтобы получить десятичное число между двумя произвольными числами X и Y, используйте масштабирование RAND:
=RAND() * (X - Y) + YНапример, для диапазона от 1 до 100:
=RAND() * (100 - 1) + 1Если нужен целый результат, оберните формулу в INT, ROUND или используйте RANDBETWEEN. Примеры:
- Целое вниз:
=INT(RAND() * (100 - 1 + 1)) + 1- Округление до ближайшего целого:
=ROUND(RAND() * (100 - 1) + 1, 0)
Использование RANDBETWEEN с адресами ячеек
Если границы хранятся в ячейках, укажите ссылки:
=RANDBETWEEN(A1, B1)Пошагово:
- Введите нижнюю и верхнюю границы в ячейки (например, A1 и B1).

- Введите формулу =RANDBETWEEN(A1, B1).

- Нажмите Enter — получите случайное целое между границами.

- Для копирования формулы вниз используйте маркер заполнения (fill handle).

Создание массива случайных чисел с RANDARRAY
Чтобы быстро заполнить таблицу случайными значениями, используйте RANDARRAY. Она позволяет одновременно сгенерировать несколько строк и столбцов.
=RANDARRAY(rows, columns)Аргументы опциональны:
- rows — количество строк в массиве.
- columns — количество столбцов в массиве.
Пример: создать массив 5x3:
=RANDARRAY(5, 3)Пошагово:
- Выберите ячейку, где должен появиться массив.
- Введите =RANDARRAY(числострок, числостолбцов).
- Нажмите Enter — массив займёт соответствующий диапазон.


Управление частотой пересчёта и производительностью
Поскольку RAND и RANDBETWEEN — volatile, при большом количестве формул лист может начать тормозить. Вы можете изменить параметры пересчёта:
- Нажмите «Файл» → «Настройки».
- Перейдите на вкладку «Вычисления» (Calculation).
- В разделе «Пересчёт» (Recalculation) выберите подходящий режим: «При изменении и при открытии» или «Каждую минуту»/«Кажде 10 минут», если доступно.

- Нажмите «Сохранить настройки».
Если вам нужно один раз сгенерировать данные и больше не пересчитывать — зафиксируйте значения: выделите диапазон → правый клик → «Копировать» → правый клик → «Специальная вставка» → «Вставить только значения». Это избавит от дальнейших пересчётов.
Когда встроенные функции не подходят
- Когда нужна воспроизводимость (фиксированный псевдослучай с известным seed). Google Sheets не даёт прямой возможности задать seed для RAND. Для воспроизводимых последовательностей используйте Apps Script или внешние инструменты и вставляйте значения.
- Когда нужна криптографическая безопасность. RAND и Math.random не предназначены для криптографии.
- Когда требуется уникальность большого количества целых в небольшом диапазоне. Встроенные функции могут давать дубликаты; предпочтительнее генерировать последовательность уникальных значений через скрипт и проверку.
Альтернативные подходы и расширенные приёмы
- Apps Script: заполнение диапазона случайными числами, проверка уникальности, фиксация значений. Простой скрипт для целых чисел:
function fillRandomIntegers(rangeA1, min, max) {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(rangeA1);
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[0].length; j++) {
values[i][j] = Math.floor(Math.random() * (max - min + 1)) + min;
}
}
range.setValues(values);
}- Экспорт в Python/R: когда нужна статистическая модель, сложные распределения или воспроизводимость, удобнее генерировать данные в Python/R, задав seed, и импортировать.
- Использование вспомогательных столбцов: для получения уникальных случайных чисел можно присвоить каждой строке случайный ключ и отсортировать по этому ключу, затем взять уникальную комбинацию.
Примеры преобразований данных
- Преобразовать равномерное распределение в диапазон [a, b]:
=RAND()*(b - a) + a- Получить целое в [a, b]:
=INT(RAND()*(b - a + 1)) + a- Получить нормальное распределение приближённо (Box–Muller через Google Sheets):
=SQRT(-2*LN(RAND()))*COS(2*PI()*RAND())Этот приём даёт значения с приближённым нормальным распределением (среднее 0, дисперсия 1). Для смещения и масштабирования используйте формулу: mean + stdev * (результат).
Практическое руководство: SOP для генерации и фиксации случайных данных
- Определите цель: тестовые данные, выборка, уникальные ключи.
- Выберите функцию: RAND (десятичные), RANDBETWEEN (целые), RANDARRAY (массивы), Apps Script (воспроизводимость/уникальность).
- Сгенерируйте значение(я) в рабочей копии листа.
- Проверьте распределение/повторы (при необходимости): используйте сводную таблицу или COUNTIF для поиска дубликатов.
- Зафиксируйте значения: вставить только значения или экспорт.
- Документируйте процесс: где хранятся границы и какой метод использовался.
Рекомендации по тестированию и критерии приёмки
Критерии приёмки:
- Диапазоны соблюдены: все значения находятся в заданных границах.
- Формат: целые/десятичные — как ожидалось.
- Пересчёт контролируем: при необходимости значения зафиксированы.
- Производительность: лист не тормозит при объёме данных.
Тестовые кейсы:
- Тест 1: RANDBETWEEN(1, 10) 1000 раз — убедиться, что все значения ∈ [1,10].
- Тест 2: RAND() * (5 - 2) + 2 — проверить минимум ≈2 и максимум <5 при большом числе итераций.
- Тест 3: RANDARRAY(100, 10) — измерить время загрузки и пересчёта.
- Тест 4: После «Вставить значения» значения не должны изменяться при пересчёте листа.
Роли и чек-листы
Аналитик:
- Проверить границы и формат данных.
- Оценить необходимость уникальности.
- Зафиксировать источник случайных данных.
Разработчик/автоматизатор:
- Написать Apps Script для воспроизводимости и проверки уникальности.
- Добавить логирование в скрипт (дата/время, параметры).
QA:
- Выполнить тестовые кейсы, описанные выше.
- Проверить, что фиксация уничтожает зависимость от volatile-функций.
Преподаватель/тьютор:
- Подготовить небольшую рабочую тетрадь с примерами для студентов.
- Показать отличия между равномерным и нормальным распределением.
Модель принятия решения
flowchart TD
A[Нужны целые числа?] -->|Да| B{Требуется уникальность?}
B -->|Да| C[Использовать Apps Script с проверкой уникальности]
B -->|Нет| D[Использовать RANDBETWEEN]
A -->|Нет| E[Нужны десятичные значения?]
E -->|Да| F[Использовать RAND и масштабирование]
E -->|Нет| G[Использовать RANDARRAY для массивов или скрипт]Ограничения и типичные ошибки
- Не учитывайте RAND для криптографии или задач, где важен сильный RNG.
- Не забывайте фиксировать данные, если дальнейшая смена значений недопустима.
- При больших объёмах используйте параметры пересчёта или скрипты, чтобы избежать тормозов.
- Проверяйте граничные условия: lower <= upper для RANDBETWEEN.
Короткая памятка (cheat sheet)
- Случайное десятичное 0–1: =RAND()
- Случайное десятичное a–b: =RAND()*(b-a)+a
- Случайное целое a–b: =RANDBETWEEN(a, b)
- Массив случайных чисел: =RANDARRAY(rows, columns)
- Зафиксировать значения: Копировать → Специальная вставка → Вставить только значения
Факты и числа
- RAND возвращает значения в интервале [0, 1).
- RANDBETWEEN возвращает целые значения, включая обе границы.
- RAND и RANDBETWEEN являются volatile и пересчитываются при изменениях листа.
Примечания по безопасности и конфиденциальности
Сгенерированные данные не связаны с личными данными, однако если вы используете случайные ключи для доступа или тестовых аккаунтов, храните их безопасно. Не применяйте RAND для шифрования или генерации паролей.
Завершение
Функции RAND, RANDBETWEEN и RANDARRAY покрывают большинство задач по генерации случайных чисел в Google Sheets. Для задач, требующих воспроизводимости, уникальности или масштабирования, используйте Apps Script или внешние языки (Python/R). Всегда фиксируйте значения, если дальнейший пересчёт нежелателен, и проверяйте распределение, если это важно для анализа.
Важное: если вам нужно воспроизводимое или криптографически стойкое случайное значение, рассматривайте специализированные инструменты, а не встроенные функции таблиц.
Краткое резюме внизу:
- RAND — для десятичных значений в [0,1).
- RANDBETWEEN — для случайных целых между двумя границами.
- RANDARRAY — для массивов.
- Для фиксации значений используйте «Вставить значения» или Apps Script.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone