В статье объясняются особенности алгоритма получения случайных чисел Excel и показано, как использовать функции СЛЧИС и СЛУЧМЕЖДУ для чисел, дат, паролей и других текстовых выражений.

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

Случайность имеет множество различных приложений в криптографии, статистике, лотерее, азартных играх и многих других областях. И поскольку она всегда была востребована, с древних времен существовали различные методы создания случайных чисел, такие как подбрасывание монет, бросание кубиков, тасование игральных карт и так далее. Конечно, мы не будем полагаться на такие «экзотические» техники в этом руководстве и сосредоточимся на том, что может предложить генератор случайных чисел Excel.

Создание случайных чисел в Excel – основы.

Случайные числа - это без всякой закономерности выбранная последовательность чисел. Но в жизни практически всегда применяются псевдослучайные числа. Их получают по заранее определенному сложному алгоритму. Для постороннего человека они выглядят случайными, но все же их можно предсказать, если узнать этот сложный алгоритм. Псевдослучайные числа применяются во всех компьютерных программах.

Хотя функции случайных чисел Excel удовлетворяют всем стандартным тестам на случайность, они все же не выдают истинные случайные числа. Но это не значит, что Excel для этих целей не годится. Псевдослучайные числа, создаваемые функциями Excel, прекрасно подходят для многих целей.

Давайте подробнее рассмотрим, как это происходит, чтобы вы знали, чего от стандартных функций Excel можно ожидать, а чего нельзя.

Как и большинство компьютерных программ, генератор случайных чисел Excel производит псевдослучайные числа с помощью некоторых математических формул. Для вас это означает, что теоретически эти числа, создаваемые Excel, предсказуемы. Но только при условии, что кто-то знает все детали алгоритма. Это причина того, что это никогда не было задокументировано и вряд ли когда-либо будет сделано. 

Итак, как можно создавать случайные числа в Excel?

  • Функции Excel СЛЧИС и СЛУЧМЕЖДУ (RAND и RANDBETWEEN в английской версии) возвращают псевдослучайные числа из равномерного распределения, также известного как прямоугольное распределение, где существует равная вероятность для всех значений, которые величина может принимать. Хороший пример равномерного распределения - бросок одной игральной кости. Итогом такой жеребьевки являются шесть возможных значений (1, 2, 3, 4, 5, 6), и каждое из них имеет одинаковую вероятность. 
  • Функции Excel СЛЧИС и СЛУЧМЕЖДУ, по слухам, инициализируются из системного времени компьютера. Технически начальное число является отправной точкой для создания последовательности чисел. И каждый раз, когда вызывается случайная функция Excel, используется новое начальное число, которое возвращает уникальную последовательность. Другими словами, при использовании генератора случайных чисел в Excel вы не можете получить повторяемую комбинацию ни с помощью функции СЛЧИС и СЛУЧМЕЖДУ, ни с помощью VBA, ни какими-либо другими способами.
  • В ранних версиях Excel, до Excel 2003, алгоритм случайных чисел имел относительно небольшой диапазон (менее 1 миллиона неповторяющихся последовательностей чисел) и не прошел несколько стандартных тестов на случайность для длинных последовательностей. По этой причине, если кто-то все еще работает со старой версией Excel, вам лучше не использовать функцию СЛЧИС с большими имитационными моделями.

Это довольно длинное техническое введение закончено, и мы переходим к более практическим и более полезным вещам.

Функция случайного числа — СЛЧИС.

Функция СЛЧИС в Excel - одна из двух функций, специально разработанных для случайных чисел. Она возвращает произвольное десятичное число (действительное число) от 0 до 1.

СЛЧИС – это непостоянная функция, означающая, что новое случайное число возникает каждый раз при вычислении рабочего листа. А это происходит часто — когда вы выполняете какое-либо действие, например, редактируете формулу (не обязательно СЛЧИС, даже любую другую формулу на листе), редактируете ячейку или вводите новые данные.

Функция СЛЧИС доступна во всех версиях Excel, начиная с самых ранних.

Поскольку она не имеет аргументов, вы просто записываете её в ячейку, а затем копируете куда это необходимо:

Функция случайного числа — СЛЧИС

А теперь давайте составим несколько формул СЛЧИС для создания случайных чисел в соответствии с вашими условиями.

Ограничение верхней границы диапазона случайных чисел.

Чтобы создать массив от нуля до любого значения N, вы умножаете функцию СЛЧИС на N:

СЛЧИС() * N

Например, чтобы создать последовательность чисел, больше или равных 0, но меньше 50, используйте следующую формулу:

=СЛЧИС()*50

Примечание. Значение верхней границы никогда не включается в возвращаемую последовательность. Например, если вы хотите получить случайные числа от 0 до 10, включая 10, правильная формула  будет  =СЛЧИС()*11.

Обратите также внимание, что количество отображаемых десятичных знаков определяется форматом ячеек. В данном случае установлено 2 знака после запятой, хотя на самом деле их гораздо больше. Об округлении их мы поговорим чуть ниже.

Случайные числа в интервале «от-до».

Чтобы создать случайное число между любыми двумя указанными вами величинами, используйте следующую формулу СЛЧИС:

СЛЧИС() * ( B - A ) + A

Где A - значение нижней границы (наименьшее число), а B - значение верхней границы (наибольшее).

Например, чтобы записать на ваш лист случайные числа от 10 до 50, вы можете использовать следующую формулу:

=СЛЧИС()*(50-10)+10

Случайные числа в интервале «от-до» в Excel

Примечание. Эта формула никогда не вернет число, равное максимальному значению указанного диапазона (то есть, B).

Случайные целые числа.

Чтобы функция Excel СЛЧИС выдавала целые числа, возьмите любую из вышеупомянутых формул и оберните ее в функцию ЦЕЛОЕ().

Чтобы создать случайные целые числа от 0 до 50:

=ЦЕЛОЕ(СЛЧИС()*50)

Чтобы получить их в интервале от 10 до 50:

=ЦЕЛОЕ(СЛЧИС()*(50-10)+10)

Случайные целые числа в Excel

А теперь рассмотрим более новую функцию — СЛУЧМЕЖДУ().

Функция Excel СЛУЧМЕЖДУ — как получить случайные целые числа в указанном диапазоне

СЛУЧМЕЖДУ - еще одна функция, предоставляемая Excel для случайных чисел. Она возвращает их в указанном вами диапазоне:

СЛУЧМЕЖДУ(нижнее_значение; верхнее_значение)

Как и СЛЧИС, СЛУЧМЕЖДУ в Excel – это непостоянная функция, которая возвращает новый результат каждый раз, когда ваша электронная таблица пересчитывается. А происходит это при любом изменении на листе.

Например, чтобы решить ту же задачу, которую мы рассматривали чуть выше: получить случайные целые числа от 10 до 50 (включая 10 и 50), используйте следующую формулу:

=СЛУЧМЕЖДУ(10; 50)

случайные целые числа в указанном диапазоне

Функция СЛУЧМЕЖДУ в Excel может создавать как положительные, так и отрицательные числа. Например, чтобы получить список целых чисел от -10 до 10, введите следующую формулу:

=СЛУЧМЕЖДУ(-10; 10)

Функция СЛУЧМЕЖДУ доступна в Excel 2019 - 2007. В более ранних версиях вы можете использовать формулу СЛЧИС, рассмотренную нами выше.

Далее в этом руководстве вы найдете еще несколько примеров формул, демонстрирующих, как использовать функцию СЛУЧМЕЖДУ для записи случайных значений, отличных от целых.

Как создавать случайные числа с нужным количеством десятичных знаков.

Хотя функция СЛУЧМЕЖДУ в Excel была разработана для возврата целых чисел, вы можете заставить ее возвращать случайные десятичные числа с любым количеством знаков после запятой.

Например, чтобы получить список чисел с одним десятичным знаком, вы умножаете нижнее и верхнее значения на 10, а затем делите возвращаемое значение на 10:

СЛУЧМЕЖДУ( нижнее значение * 10; верхнее значение * 10) / 10

Следующая формула СЛУЧМЕЖДУ() возвращает случайные десятичные числа от 1 до 50:

=СЛУЧМЕЖДУ(1*10; 50*10)/10

случайные числа с нужным количеством десятичных знаков в Excel

Однако, обратите внимание, что среди полученных результатов встречаются и значения без десятых, то есть десятичный знак может быть равен нулю.

Аналогичным образом, чтобы выдать случайные числа от 1 до 50 с двумя десятичными знаками, вы умножаете аргументы функции СЛУЧМЕЖДУ на 100, а затем также делите результат на 100:

=СЛУЧМЕЖДУ(1*100; 50*100) / 100

Как получить случайные даты в Excel

Как вы знаете, даты в Excel представляют собой числа. Поэтому рассматриваемые нами подходы вполне применимы и к ним.

Чтобы вернуть список произвольных дат в каком-то временном интервале, используйте функцию СЛУЧМЕЖДУ в сочетании с ДАТАЗНАЧ:

СЛУЧМЕЖДУ(ДАТАЗНАЧ( дата начала ), ДАТАЗНАЧ( дата окончания ))

Например, чтобы получить список дат с 1 июня 2015 года по 30 июня 2015 года включительно, введите следующую формулу в свой рабочий лист:

=СЛУЧМЕЖДУ(ДАТАЗНАЧ("1-Июл-2021"); ДАТАЗНАЧ("31-Авг-2021"))

В качестве альтернативы вы можете использовать функцию ДАТА:

=СЛУЧМЕЖДУ(ДАТА(2021,7,1),ДАТА(2021,8,31))

Не забудьте применить формат даты, и вы получите список случайных дат, подобный этому:

Как получить случайные даты в Excel

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

Как вставить случайное время в Excel

Учитывая, что во внутренней системе Excel время хранится как десятичное число от 0 до 1, вы можете использовать стандартную функцию Excel СЛЧИС для вставки случайных действительных чисел, а затем просто применить формат времени к этим ячейкам:

Как вставить случайное время в Excel

Чтобы вернуть случайное время в соответствии с вашими критериями, требуются более сложные формулы, как показано ниже.

Случайное время в указанном интервале.

Чтобы вставить случайное время между любыми двумя указанными вами значениями времени, используйте функцию ВРЕМЯ() или ВРЕМЗНАЧ() вместе с СЛЧИС():

ВРЕМЯ( время начала ) + СЛЧИС() * (ВРЕМЯ( время начала ) - ВРЕМЯ( время окончания ))

 или

ВРЕМЗНАЧ ( время начала ) + СЛЧИС () * (ВРЕМЗНАЧ ( время начала ) - ВРЕМЗНАЧ ( время окончания ))

Например, чтобы вставить время между 6:00 и 20:30, вы можете использовать любую из следующих формул:

=ВРЕМЯ(6;0;0) + СЛЧИС() * (ВРЕМЯ(20;30;0) - ВРЕМЯ(6;0;0))

=ВРЕМЗНАЧ("6:00:00") + СЛЧИС() * (ВРЕМЗНАЧ("20:30:00") - ВРЕМЗНАЧ("6:00:00"))

Как вставить случайное время в указанном интервале в Excel

Случайные дата и время.

Чтобы создать список случайных дат и времени, используйте комбинации функций СЛУЧМЕЖДУ и ДАТАЗНАЧ:

СЛУЧМЕЖДУ(ДАТАЗНАЧ( начальная дата) ; ДАТАЗНАЧ( конечная дата )) + СЛУЧМЕЖДУ(ВРЕМЗНАЧ( время начала ) * 10000; ВРЕМЗНАЧ( время окончания ) * 10000) / 10000

Предположим, вы хотите вставить произвольные даты между 1 июня 2021 года и 31 августа того же года со временем между 8:30 и 17:00. Следующая формула подойдет для вас:

=СЛУЧМЕЖДУ(ДАТАЗНАЧ("1-июн-2021"); ДАТАЗНАЧ("31-авг-2021")) + СЛУЧМЕЖДУ(ВРЕМЗНАЧ("8:30") * 10000; ВРЕМЗНАЧ("17:00") * 10000) / 10000

Вы также можете указать дату и время, используя функции ДАТА и ВРЕМЯ соответственно:

=СЛУЧМЕЖДУ(ДАТА(2021;6;1); ДАТА(2021;8;31)) + СЛУЧМЕЖДУ(ВРЕМЯ(8;30;0) * 10000; ВРЕМЯ(17;0;0) * 10000) / 10000

Вставить случайные дату и время в Excel

Выбирайте тот вариант, который больше подходит для вашей задачи.

Как получить случайные буквы в Excel

Чтобы вернуть случайную букву, требуется комбинация трех разных функций:

=СИМВОЛ(СЛУЧМЕЖДУ(КОДСИМВ("А");КОДСИМВ("Я")))

Где A - первый символ, а Я - последний символ в диапазоне букв, который вы хотите использовать (в алфавитном порядке).

В приведенной выше формуле:

  • КОДСИМВ() возвращает коды ANSI для указанных букв.
  • СЛУЧМЕЖДУ() принимает код, возвращаемый функцией КОДСИМВ, как нижнее и верхнее значения диапазона.
  • СИМВОЛ() преобразует коды ANSI, возвращаемые СЛУЧМЕЖДУ, в соответствующие буквы.
Как получить случайные буквы в Excel

Примечание. Так как код ANSI различный для прописных и строчных букв, эта формула чувствительна к регистру.

Если кто-то помнит таблицу кодов символов ANSI, ничто не мешает вам передать коды букв непосредственно в функцию СЛУЧМЕЖДУ.

Например, чтобы получить заглавные буквы между A (код ANSI 192) и Я (код ANSI 223), вы пишете:

=СИМВОЛ(СЛУЧМЕЖДУ(192;223))

Чтобы получить строчные буквы от а (код ANSI 224) до я (код ANSI 255), используйте следующую формулу:

=СИМВОЛ(СЛУЧМЕЖДУ(224;255))

Коды символов:

  • 192-223  — прописные буквы А-Я
  •  224-255 — строчные буквы а-я

Чтобы вставить случайный специальный символ, например,  ! "# $% & '() * +, -. /, используйте функцию СЛУЧМЕЖДУ с первым параметром, установленным на 33 (код ANSI для "!'), и вторым параметром 47 (код ANSI для "/").

=СИМВОЛ(СЛУЧМЕЖДУ(33;47))

Создание текстовых строк и паролей в Excel

Чтобы создать произвольную текстовую строку в Excel, вам просто нужно объединить несколько функций СИМВОЛ и СЛУЧМЕЖДУ.

Например, чтобы получить список паролей, состоящих из 4 символов, вы можете использовать формулу, подобную этой:

=СЛУЧМЕЖДУ(0;9) & СИМВОЛ(СЛУЧМЕЖДУ(65;90)) & СИМВОЛ(СЛУЧМЕЖДУ(97; 122)) & СИМВОЛ(СЛУЧМЕЖДУ(33;47))

Чтобы сделать запись более компактной, я ввел коды ANSI непосредственно в формулу. Четыре функции возвращают следующие случайные значения:

  • СЛУЧМЕЖДУ(0;9) — возвращает числа от 0 до 9.
  • СИМВОЛ(СЛУЧМЕЖДУ(65;90))  —прописные буквы от A до Z.
  • СИМВОЛ(СЛУЧМЕЖДУ(97; 122))  — получаем строчные буквы от a до z.
  • СИМВОЛ(СЛУЧМЕЖДУ(33;47)) — добавляем специальные символы.

Текстовые строки, полученные с помощью приведенной выше формулы, будут иметь вид « 4Np# » или « 2Yu& ».

Создание случайных паролей в Excel

Внимание! Если вы используете аналогичную формулу для создания случайных паролей, они не будут слишком надежными. Конечно, вы можете создавать более длинные текстовые строки, связывая больше функций. Однако невозможно изменить порядок следования, т.е.  первая по счёту функция всегда возвращает цифру, вторая функция возвращает заглавную букву и так далее.

Если вы ищете расширенный генератор случайных паролей в Excel, способный создавать текстовые строки любой длины и шаблона, вы можете проверить возможности Advanced Random Generator для тестовых строк.

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

Чтобы гарантировать, что ваши строки или пароли остаются неизменными после их создания, вам нужно будет заблокировать функцию СЛУЧМЕЖДУ от обновления значений, что подводит нас непосредственно к следующему разделу.

Как предотвратить постоянный пересчет формул СЛЧИС и СЛУЧМЕЖДУ.

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

  1. Чтобы функции СЛЧИС или СЛУЧМЕЖДУ не пересчитывались в одной определённой ячейке, выберите её, переключитесь на строку формул и нажмите клавишу F9, чтобы заменить формулу ее значением.
  2. Чтобы предотвратить пересчет, используйте инструмент Специальная вставка. Выделите все ячейки с формулой, нажмите Ctrl + C, чтобы скопировать их в буфер обмена. Затем щелкните правой кнопкой мыши выбранный диапазон и выберите Специальная вставка > Значения. Или же можете нажать Shift + F10 а потом V, что также позволит вставить ранее скопированные значения вместо формул.
  3. Можно использовать специальный инструмент преобразования формул в значения, который является составной частью надстройки Ultimate Suite.

Как создать уникальные случайные числа в Excel

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

  1. Используйте функцию СЛЧИС или СЛУЧМЕЖДУ для создания списка чисел. Создайте больше значений, чем вам действительно нужно, потому что некоторые из них будут дублироваться и будут удалены позже.
  2. Преобразуйте формулы в значения, как описано выше.
  3. Удалите повторяющиеся значения с помощью встроенного инструмента Excel (см. Как удалить дубликаты в Excel) или специального инструмента для удаления дубликатов в Excel.

Также вы можете воспользоваться специальным генератором случайных значений в Excel, в котором есть опция получения случайных цифровых и текстовых значений.

Более подробно читайте о нем по этой ссылке.