RANDBETWEEN в Google Sheets — синтаксис, примеры и советы

Понимание способов генерации случайных чисел в таблицах полезно для анализа, тестирования и случайных выборок. В Google Sheets есть две базовые функции для этого: RAND и RANDBETWEEN. В этой статье подробно разберём RANDBETWEEN: синтаксис, отличия от RAND, практические примеры, распространённые подводные камни и готовые пошаговые методики для разных ролей.
Что делает RANDBETWEEN
RANDBETWEEN возвращает случайное целое число между двумя числами, включая границы. Ключевая идея: вы контролируете интервал, функция выбирает целое внутри него.
Определение в одну строку: RANDBETWEEN — это генератор случайных целых чисел в заданных границах.
Синтаксис RANDBETWEEN
=RANDBETWEEN(lower, upper)Аргументы:
- lower — нижняя граница (целое или десятичное число). Оно округляется вверх до ближайшего целого (например, 2.6 → 3).
- upper — верхняя граница (целое или десятичное число). Оно округляется вниз до ближайшего целого (например, 10.4 → 10).
Важно: если lower > upper, функция вернёт ошибку. Если вы передаёте десятичные значения, их приведут к целым по правилам, указанным выше.
Примечание о типе результата
RANDBETWEEN всегда возвращает целое число. Если вам нужны десятичные случайные числа, используйте RAND() и масштабируйте результат (см. раздел “Альтернативные подходы”).
RANDBETWEEN vs RAND
Коротко:
- RAND возвращает десятичное число в диапазоне 0..1 (не принимает параметры).
- RANDBETWEEN возвращает целые числа и требует две границы.
- RANDBETWEEN удобен, когда нужен целочисленный ID, индекс или фиксированная граница.
- RAND удобен для нормирования, взвешивания и дробных вероятностей.
Когда выбирать что:
- Нужны целые числа в диапазоне — RANDBETWEEN.
- Нужны дробные или нормированные значения — RAND.
- Нужна повторяемость/фиксированное семя — ни одна из встроенных функций не поддерживает сидирование; используйте Apps Script или внешние инструменты.
Простой пример RANDBETWEEN
Шаги:
- Выберите ячейку, куда хотите поместить результат.
- Введите формулу: =RANDBETWEEN(1, 100)
- Нажмите Enter.
Формула вернёт случайное целое число от 1 до 100 включительно.
Совет: чтобы зафиксировать значение и предотвратить дальнейшие пересчёты, скопируйте ячейку и вставьте как значения: Правка → Вставить специальные → Только значения (или Ctrl+Shift+V / Cmd+Shift+V).
Вложенный пример: выбор случайного элемента из списка
Задача: в столбце A есть имена A2:A11. Нужно случайно выбрать одно имя.
Формула:
=INDEX(A2:A11, RANDBETWEEN(1, COUNTA(A2:A11)))Как это работает:
- COUNTA(A2:A11) считает количество занятных строк — это верхняя граница.
- RANDBETWEEN(1, <число>) генерирует случайную позицию в диапазоне.
- INDEX возвращает элемент по этой позиции.
Полезно, когда список динамически растёт: COUNTA автоматически подстроит верхнюю границу.
Частые сценарии и готовые приёмы
- Сгенерировать N случайных чисел в столбце
- Заполните диапазон формулой RANDBETWEEN в первой ячейке и протяните вниз.
- Чтобы значения не менялись, выделите диапазон → Копировать → Правка → Вставить специальные → Только значения.
- Получить N уникальных случайных чисел в диапазоне
- Создайте вспомогательный столбец с RAND() рядом с последовательностью чисел, затем отсортируйте по этому столбцу.
- Подход: в столбце A числа 1..100, в столбце B формула =RAND(), затем Данные → Сортировка диапазона по столбцу B, либо =SORT(A2:A101, B2:B101, TRUE), после чего возьмите первые N элементов.
- Смоделировать вероятностное событие с весами
- RANDBETWEEN не поддерживает веса напрямую. Используйте RAND() и пороговую проверку или аккумулированные интервалы и MATCH.
- Создать стабильные случайные значения через Apps Script (не летучие)
Код (Apps Script):
function fillRandomIntegers() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("B2:B11"); // измените под свой диапазон
var lower = 1;
var upper = 100;
var values = [];
for (var i = 0; i < range.getNumRows(); i++) {
var rand = Math.floor(Math.random() * (upper - lower + 1)) + lower;
values.push([rand]);
}
range.setValues(values);
}Запустив функцию, вы получите заполненные значения, которые не будут пересчитываться автоматически.
Когда RANDBETWEEN не подходит (контрпримеры)
- Нужна воспроизводимая генерация с контролируемым seed — RANDBETWEEN не даёт семя. Решение: Apps Script или внешняя библиотека.
- Требуются дробные случайные значения — используйте RAND() и масштабируйте:
=RAND()*(upper-lower)+lowerНужны веса/вероятности — используйте RAND() + накопительные интервалы.
Нужна высокая производительность на больших массивах — массовые вызовы RANDBETWEEN делают лист «летучим» и замедляют работу; лучше генерировать данные скриптом и вставлять значения.
Производительность и пересчёт
RANDBETWEEN — волатильная функция. Она пересчитывается при каждом изменении листа, при открытии файла и в зависимости от настроек пересчёта.
Как настроить пересчёт (локализованные UI-метки):
- Нажмите Файл → Настройки.
- Перейдите на вкладку Вычисления.
- В поле Пересчёт выберите: При изменении, При изменении и каждую минуту или При изменении и каждый час.
Важное: включение частого пересчёта может сильно замедлить файл, если в нём много формул.
Ментальные модели и эвристики
- “Летучесть”: думайте о RANDBETWEEN как о временной заметке — она меняется, пока вы не зафиксируете значение. Если результат важен, сразу фиксируйте.
- “Границы важнее распределения”: RANDBETWEEN даёт равномерное распределение целых в пределах границ; если нужна нормальность или иное распределение — применяйте более сложные методы.
- “Разделяй генерацию и потребление”: генерируйте случайные данные в одном месте (или через скрипт), затем используйте в аналитике как статические значения.
Роль‑ориентированные чек‑листы
Для аналитика:
- Определите нужный диапазон и количество значений.
- Сгенерируйте значения в отдельном листе.
- Зафиксируйте значения: Вставить только значения.
- Проверьте распределение (гистограмма).
Для преподавателя (рандомизация тестов):
- Подготовьте список вопросов.
- Добавьте вспомогательный столбец =RAND() и отсортируйте или используйте INDEX+RANDBETWEEN.
- Зафиксируйте позиции и создайте копии перед рассылкой.
Для разработчика/автоматизатора:
- Используйте Apps Script для больших объёмов.
- Логируйте операции генерации.
- Добавьте проверку границ и обработку ошибок в скрипт.
Методика: быстрый SOP для случайной выборки из таблицы (5 шагов)
- Скопируйте исходные данные на отдельный лист (чтобы не повредить оригинал).
- Добавьте столбец со =RAND() рядом.
- Отсортируйте диапазон по столбцу RAND() по возрастанию.
- Возьмите первые N строк как случайную выборку.
- Зафиксируйте выборку: Копировать → Вставить специальные → Только значения.
Критерии приёмки (тесты)
- Формула возвращает значение в заданных границах для 100 подряд запусков.
- При задании non-integer границ результат остаётся целым и не выходит за пределы приведённых границ.
- При пересчёте листа значения изменяются, если не зафиксированы.
- При использовании скрипта значения остаются стабильными до следующего запуска скрипта.
Безопасность и приватность
- Не используйте RANDBETWEEN для генерирования паролей, ключей API или других секретов.
- Если вы рандомизируете персональные данные, соблюдайте правила обработки персональных данных (GDPR/локальное законодательство).
Шаблонный лист чек‑шитов и формул (шпаргалка)
- Случайное целое в 1..10:
=RANDBETWEEN(1, 10)- Случайное десятичное в 0..1:
=RAND()- Случайное десятичное в lower..upper:
=RAND()*(upper-lower)+lower- Выбрать случайный элемент из A2:A100:
=INDEX(A2:A100, RANDBETWEEN(1, COUNTA(A2:A100)))- Перетасовать список через вспомогательный столбец:
- В B2: =RAND() и протянуть.
- Данные → Сортировка диапазона по столбцу B.
Примеры ошибок и советы по их исправлению
- Ошибка “#VALUE!” — проверьте, что lower и upper — числа и что lower ≤ upper.
- Похожая формула не возвращает уникальные значения — используйте вспомогательную колонку с RAND() и сортировку.
- Файл стал медленным — уменьшите количество волатильных функций или используйте Apps Script для генерации данных вне формул.
Быстрый взгляд: когда использовать RANDBETWEEN
- Тестовые данные и мок‑сервисы.
- Случайные выборки из небольших списков.
- Простейшие игры и розыгрыши в пределах листа.
Не используйте, если вам нужна криптографическая стойкость, повторяемость по семени или специфическое распределение.
Краткое резюме
RANDBETWEEN — простой и удобный инструмент для генерации случайных целых чисел в Google Sheets. Он полезен для множества повседневных задач, но обладает ограничениями: волатильность, отсутствие управления seed и отсутствие поддержки весов. Для больших или воспроизводимых задач лучше применять Apps Script или комбинировать RANDBETWEEN с RAND(), COUNTA и INDEX.
Важно: фиксируйте результаты, если они критичны, и выбирайте метод в зависимости от требований к производительности и повторяемости.
Полезные ресурсы: встроенные справки Google Sheets по функциям RAND и INDEX, документация Apps Script.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента