Редактор случайных чисел. Генератор случайных чисел. Пример генерации случайных чисел нормального распределения

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

Генератор случайных чисел с использованием функции СЛЧИС

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

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

Функция СЛЧИС доступна во всех версиях: Excel 2016 , Excel 2013 , Excel 2010 , Excel 2007 , Excel 2003 .

Поскольку функция Excel СЛЧИС не имеет аргументов, вы просто вводите =СЛЧИС() в ячейке и затем копируете формулу на столько ячеек, сколько хотите:

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

Генератор случайных чисел от нуля до заданной верхней границы диапазона

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

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

СЛЧИС()*50

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

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

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

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

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

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

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

Примечание . Эта формула генерации случайных чисел никогда не вернет число, равное наибольшему числу указанного диапазона (значение B).

Генератор случайных целых чисел в Excel

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

Чтобы от 0 до 50:

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

Чтобы генерировать случайные целые числа от 10 до 50:

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

Генератор случайных чисел в Excel - Генерация случайных целых чисел

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

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

СЛУЧМЕЖДУ (нижняя граница; верхняя граница)

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

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

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

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

Генератор случайных чисел в Excel - Генерация случайных чисел в заданном диапазоне

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

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

Функция СЛУЧМЕЖДУ доступна в следующих версиях: Excel 2016 , Excel 2013 , Excel 2010 и Excel 2007 .

В более ранней версии Excel 2003 , вы можете использовать формулу СЛЧИС , рассмотренную выше.

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

Хотя функция СЛУЧМЕЖДУ в 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 сентября 2017 и 20 ноября 2017 включительно, введите следующую формулу на листе:

СЛУЧМЕЖДУ(ДАТА(2017;9;1);ДАТА(2017;11;21))

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

Генератор случайных чисел в Excel - Генерация случайных дат

Генератор случайного времени в Excel

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

Генератор случайных чисел в Excel - Генерация случайного времени функцией СЛЧИС и применение к ней формата Время

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

Генератор случайного времени в указанном диапазоне

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

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

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

ВРЕМЯ(5;30;0)+СЛЧИС()*(ВРЕМЯ(18;0;0)-ВРЕМЯ(5;0;0))

Генератор случайных чисел в Excel - Генерация случайного времени в заданном интервале

Генератор случайных букв в Excel

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

СИМВОЛ(СЛУЧМЕЖДУ(КОДСИМВ("A");КОДСИМВ("Z")))

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

Разберем функции, в приведенной выше формуле:

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

Генератор случайных чисел в Excel - Генерация случайных букв

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

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

Например, чтобы получить произвольные прописные буквы между A (код ANSI 65) и Z (код ANSI 90), вы пишете:

СИМВОЛ(СЛУЧМЕЖДУ (65;90))

Чтобы генерировать строчные буквы между а (код ANSI 97) в z (код ANSI 122), вы используете следующую формулу:

СИМВОЛ(СЛУЧМЕЖДУ(97;122))

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

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

Генератор случайных чисел в Excel - Генерация случайных символов

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

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

  1. Чтобы остановить функции СЛЧИС или СЛУЧМЕЖДУ от пересчета в одной ячейке , выберите эту ячейку, переключитесь на панель формул и нажмите F9 , чтобы заменить формулу на ее значение.
  2. Чтобы предотвратить функцию случайных чисел в Excel от автоматического обновления значений в нескольких ячейках , используйте функцию Вставить. Выберите все ячейки с формулой генерации случайных значений, нажмите Ctrl+C , чтобы скопировать их, затем щелкните правой кнопкой мыши выбранный диапазон и нажмите «Вставить специальные »--> «Значения ».

Генератор случайных чисел в Excel - Вставка значений

Генератор случайных чисел с помощью Анализа данных

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

Пример генерации случайных чисел нормального распределения

Для того чтобы сгенерировать случайные числа нормального распределения , переходим во вкладку «ДАННЫЕ », в группе «Анализ » выбираем «Анализ данных ».

Генератор случайных чисел в Excel - Анализ данных

В открывшемся списке выбираем «Генерация случайных чисел » и нажимаем кнопку «ОК ».

Генератор случайных чисел в Excel - Генерация случайных чисел

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

Генератор случайных чисел в Excel - Генерация случайных чисел нормального распределения

После того, как все данные введены нажимаем кнопку «ОК », и в результате получаем сгенерированные случайные числа нормального распределения.

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

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

Так-же имеет популярность в других сферах. Также у нас есть или паролей и чисел.

Наш генератор случайных рандомных чисел онлайн.

Наш генератор рандомайзер не требует его скачивать на ваш персональный ПК. Все происходит в режиме генератор числа онлайн. Просто укажите такие параметры, как: диапазон чисел онлайн, в котором будут случайным образом выбраны числа. Так же укажите количество чисел, которое будет выбрано.

Для примера, у Вас есть группа Вконтакте. В группе вы разыгрываете 5 призов, среди числа участников, которые сделают репост записи. С помощью специального приложения, мы получили список участников. Каждому присвоили свой порядковый номер для чисел онлайн.

Теперь переходим к нашему онлайн генератору и указываем диапазон чисел (количество участников). Например, задаем, что чисел онлайн необходимо 5, так как у нас 5 призов. Теперь жмем кнопку генерации. Тогда получаем 5 случайных чисел онлайн, в диапазоне от 1 до 112 включительно. Сгенерированые 5 чисел онлайн будут соответствовать порядковому номеру пяти участников, которые стали победителями розыгрыша. Все просто и удобно.

Еще один плюс генератор случайных чисел чисел в том, что все числа онлайн выдаются рандомным образом. Тоесть повлиять на него, либо вычислить, какое число будет следующем, не представляется возможным. Что делает сказать, честным и надежным, а администрацию, которая разыгрывает призы с помощью нашего бесплатного генератора, честной и порядочной в лице участников конкурса. А если вы сомневаетесь относительно какого-то решения, то вы можете воспользоваться нашим

Почему случайный число генератор лучший?

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

Генератор случайных чисел онлайн бесплатно!

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

Случайный число онлайн

Если вы ищете случайный число онлайн то мы создали этот ресурс именно для вас. Мы постоянно совершенствуем наши алгоритмы. Вы здесь получите настоящий случайный число генератор. Он обеспечит любые потребности как нужный вам случайный генератор совершенно бесплатно и в любое время. Создавайте с нами случайные числа онлайн. Будьте всегда уверены в полной случайности каждого сгенерированного числа.

Генератор случайных чисел рандом

Наш генератор случайных чисел рандом выбирает числа совершенно случайно. Не имеет никакого значения день или час у вас на компьютере. Это настоящий слепой выбор. Генератор рандом просто перетасовывает в случайном порядке все числа. А потом случайно выбирает из них заданную вами количество случайных чисел. Иногда числа могут повторяться, что доказывает полную случайность генератора чисел рандом.

Рандом онлайн

Рандом самый верный вариант для розыгрыша. Онлайн генератор это действительно случайный выбор. Вы защищены от любого влияния на выбор случайного числа. Сняв процесс рандом онлайн выбора победителя на видео. Это все что вам нужно. Устраивайте честные розыгрыши в сети с нашим онлайн генератором чисел. Вы получаете победителей и довольных игроков. А мы радость что смогли угодить вам нашим рандом генератором.

Рандомайзер легкий способ определить победителя онлайн. У вас есть список участников. Вставте его в поле ввода друг под другом. Сделайте один клик и наш рандомайзер пронумерует случайным образом всех участников. Такой рандомайзер можно использовать во многих сферах:

  • определение победителей розыгрышей
  • выбрать победителя из списка
  • расстановка игроков
  • Кто пойдет первый к доске 🙂

А ведь наш рандомайзер использует несколько алгоритмов одновременно. Это гарантирует полную случайность выбора победителя. Список перемешивается несколько раз случайным образом. И вы можете быть уверены, что рандомайзер сделает настоящий случайный выбор. Простой интерфейс рандомайзера компенсирует сложность алгоритмов. Пользуйтесь нашим рандомайзером для действительно честного выбора победителя онлайн!

Нужно определить победителя для розыгрыша или конкурса онлайн? Нет ничего проще. Вставьте список участников в текстовое поле на этой странице. Нажмите кнопку генерировать ниже. В полученном результате появится список участников с номером.
Каждому участнику предоставляется номер в случайном порядке. Здесь количество номеров соответствует количеству участников розыгрыша. Снимите процесс выбора победителя на видео. Таким образом вы определите победителя любого конкурса онлайн.

Победители конкурса определены

Онлайн генератор случайных чисел или рандомайзер определит победителя честно. Это самый простой способ слепого выбора. Уже не нужно тянуть билетик с лототрона. Достаточно ввести список претендентов и выбрать победителя. Снимая процесс случайного выбора на видео вы обеспечите честный розыгрыш. Кроме такого варианта определения победителей у нас еще есть . Этот розыгрыш будет полезным для одновременного просмотра результата розыгрыша. Правда в таком случае вы получите только номера победителей конкурса. То есть номера надо присвоить участникам заранее.

Определить победителя генератором случайных чисел (ГСЧ)

Генератор случайных чисел (ГСЧ) прекрасно справляется с задачей определения победителя. Его не подкупишь. ГСЧ это слепой выбор, ведь ему все равно кто выиграет конкурс. Конечно, вы сами можете ткнуть пальцем в список и определить победителя. Но это сработает для розыгрышей с призами небольшой материальной ценности. Бывают гораздо более серьезные розыгрыши. Например розыгрыш нового айфона. Тогда ваша аудитория потребует прозрачного конкурса. Это можно сделать только с помощью . А точнее, рандомайзером списка. Сняв такой процесс на видео вы продемонстрируете случайность выбора победителя. Такие генераторы помогают не только в конкурсах или розыгрышах. С ними можно играть в лотерею. Узнавать ответ на вопрос да или нет. А также решить любые вопросы где нужно положиться на волю случая.

Рандомно определить победителя

Еще раз напоминаем. Данный рандомайзер делает случайный выбор победителя в любых розыгрышах. Это может быть розыгрыш в соцсетях ВК, Фейсбук, Инстаграм. Или просто конкурс на сайте. Чтобы сомнений в честности конкурса среди участников не было нужно ГСЧ для конкурса. Для этого и есть наш сайт. Мы генерируем случайные числа, ответы, советы. Случайно определяем победителей конкурсов и многое другое.

Другие рандомайзеры на сайте

К другим основным рандомайзерам относятся:

  • ников
  • кубиков
  • ников по имени

Наши генераторы используют два метода генерации случайных чисел:

  1. На основе скорости пинга сторонних ресурсов
  2. На основе случайного зерна с несколько уровневой генерацией.

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

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

Если речь идет о разовом использовании генератора, можно воспользоваться самым простым вариантом такой программы:

Однако вычислительных способностей и функциональности такого сервиса не всегда достаточно для получения необходимых данных. На сегодняшний день существует довольно большое число специализированных онлайн программ, которые отличаются не только простотой интерфейса для пользователя, но и широким функционалом. Вам не придется самостоятельно искать десятки программ, так как специально для вас, в этой статье, мы подготовили подробный обзор ТОП 3 лучших онлайн генераторов чисел , по мнению пользователей:

Для начала следует познакомиться с основными критериями :

  1. Выбор из списка . Возможность предоставления пользователем собственного списка для генерации, с последующим выбором случайного числа из заданного набора.
  2. Выбор из диапазона . Способность генератора случайных цифр в режиме онлайн бесплатно произвести выборку из конкретного диапазона.
  3. Вывод нескольких чисел . Функция, отвечающая за одновременное предоставление сразу нескольких случайных чисел, если пользователю нужно получить больше, чем одно значение.
  4. Отключение повторности . Способность генератора исключить из последующих генераций число, выпавшее перед этим, чтобы при получении нескольких случайных цифр подряд они не дублировались.
  5. Виджет для сайта . Возможность подключить генератор к своему сайту или странице в социальных сетях, чтобы он всегда был под рукой и доступен для работы.
  6. Ссылка на результат . Возможность получения отдельной ссылки на итог каждой отдельной генерации, что подтверждает достоверность предоставляемой информации при предоставлении результатов конкурсов или розыгрышей.

Прежде чем подготовить данную статью мы проанализировали множество генераторов, которые есть в интернете. И из всех — выбрали 3 лучших:

ТОП-1: генератор чисел «Рандстафф»


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

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

Недостатки : Нет возможности . А сохранить результат генерации можно только на 3 дня (но этого обычно достаточно). Если хотите сохранить результат навсегда — нужно регистрироваться в личном кабинете (стоимость — 300 рублей).

ТОП-2: генератор чисел «Кастлот»


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

Достоинства : Кастлот позволяет пользователю выбрать рандомные числа из заданного диапазона. Это может быть одна или несколько цифр. Вы можете сами выбирать режим работы сервиса с повторностью или без. Удобным преимуществом генератора Кастлот является возможность получить отдельную ссылку на каждый результат. Есть эксклюзивная функция под названием «ещё больше случайности». При её активации процесс генерации не начинается до того момента, пока пользователь не переместит курсор мыши в определенное положение. Кроме того, в ассортименте дополнительных инструментов сервиса имеется виджет для сайта и фирменное приложение ВКонтакте.

Недостатки : Единственным явным недостатком такого генератора является отсутствие возможности выбора из списка.

ТОП-3: генератор «Случайноечисло.рф»


Описание : Сервис «Случайное число» позволяет сгенерировать онлайн значения в диапазоне от 1 до 99999. Дизайн отличается минимализмом, что идет ему на пользу. Никаких отвлекающих факторов. Им одинаково удобно пользоваться на компьютере или смартфоне. Крупные черные цифры на белом фоне отчетливо видны, поэтому даже люди с проблемным зрением не испытают дискомфорта в процессе его использования.

Достоинства : Функционал такого онлайн-генератора рандомного числа позволяет выбрать случайное значение из списка и конкретного диапазона. Если необходимо получить сразу несколько рандом чисел онлайн, требуемую цифру стоит указать в соответствующем поле, где по умолчанию стоит 1. Повторность отключается по требованию пользователя.

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

Заключение

По нашему мнению, самым лучшим и оптимальным сервисом для генерации рандомного числа является . Он обладает всеми функциями, которые есть у остальных генераторов. Единственный его минус — это отсутствие возможности отключить повторность чисел при генерации. Но как мы уже писали выше – данный нюанс не сильно важен для рядового пользователя. Может мы что-то упустили в данной статье? Если это так — пишите в комментарии!


Заметим, что в идеале кривая плотности распределения случайных чисел выглядела бы так, как показано на рис. 22.3 . То есть в идеальном случае в каждый интервал попадает одинаковое число точек: N i = N /k , где N — общее число точек, k — количество интервалов, i = 1, …, k .

Рис. 22.3. Частотная диаграмма выпадения случайных чисел,
порождаемых идеальным генератором теоретически

Следует помнить, что генерация произвольного случайного числа состоит из двух этапов:

  • генерация нормализованного случайного числа (то есть равномерно распределенного от 0 до 1);
  • преобразование нормализованных случайных чисел r i в случайные числа x i , которые распределены по необходимому пользователю (произвольному) закону распределения или в необходимом интервале.

Генераторы случайных чисел по способу получения чисел делятся на:

  • физические;
  • табличные;
  • алгоритмические.

Физические ГСЧ

Примером физических ГСЧ могут служить: монета («орел» — 1, «решка» — 0); игральные кости; поделенный на секторы с цифрами барабан со стрелкой; аппаратурный генератор шума (ГШ), в качестве которого используют шумящее тепловое устройство, например, транзистор (рис. 22.4–22.5 ).

Рис. 22.4. Схема аппаратного метода генерации случайных чисел
Рис. 22.5. Диаграмма получения случайных чисел аппаратным методом
Задача «Генерация случайных чисел при помощи монеты»

Сгенерируйте случайное трехразрядное число, распределенное по равномерному закону в интервале от 0 до 1, с помощью монеты. Точность — три знака после запятой.

Первый способ решения задачи
Подбросьте монету 9 раз, и если монета упала решкой, то запишите «0», если орлом, то «1». Итак, допустим, что в результате эксперимента получили случайную последовательность 100110100.

Начертите интервал от 0 до 1. Считывая числа в последовательности слева направо, разбивайте интервал пополам и выбирайте каждый раз одну из частей очередного интервала (если выпал 0, то левую, если выпала 1, то правую). Таким образом, можно добраться до любой точки интервала, сколь угодно точно.

Итак, 1 : интервал делится пополам — и , — выбирается правая половина, интервал сужается: . Следующее число, 0 : интервал делится пополам — и , — выбирается левая половина , интервал сужается: . Следующее число, 0 : интервал делится пополам — и , — выбирается левая половина , интервал сужается: . Следующее число, 1 : интервал делится пополам — и , — выбирается правая половина , интервал сужается: .

По условию точности задачи решение найдено: им является любое число из интервала , например, 0.625.

В принципе, если подходить строго, то деление интервалов нужно продолжить до тех пор, пока левая и правая границы найденного интервала не СОВПАДУТ между собой с точностью до третьего знака после запятой. То есть с позиций точности сгенерированное число уже не будет отличимо от любого числа из интервала, в котором оно находится.

Второй способ решения задачи
Разобьем полученную двоичную последовательность 100110100 на триады: 100, 110, 100. После перевода этих двоичных чисел в десятичные получаем: 4, 6, 4. Подставив спереди «0.», получим: 0.464. Таким методом могут получаться только числа от 0.000 до 0.777 (так как максимум, что можно «выжать» из трех двоичных разрядов — это 111 2 = 7 8) — то есть, по сути, эти числа представлены в восьмеричной системе счисления. Для перевода восьмеричного числа в десятичное представление выполним:
0.464 8 = 4 · 8 –1 + 6 · 8 –2 + 4 · 8 –3 = 0.6015625 10 = 0.602 10 .
Итак, искомое число равно: 0.602.

Табличные ГСЧ

Табличные ГСЧ в качестве источника случайных чисел используют специальным образом составленные таблицы, содержащие проверенные некоррелированные, то есть никак не зависящие друг от друга, цифры. В табл. 22.1 приведен небольшой фрагмент такой таблицы. Обходя таблицу слева направо сверху вниз, можно получать равномерно распределенные от 0 до 1 случайные числа с нужным числом знаков после запятой (в нашем примере мы используем для каждого числа по три знака). Так как цифры в таблице не зависят друг от друга, то таблицу можно обходить разными способами, например, сверху вниз, или справа налево, или, скажем, можно выбирать цифры, находящиеся на четных позициях.

Таблица 22.1.
Случайные цифры. Равномерно
распределенные от 0 до 1 случайные числа
Случайные цифры Равномерно распределенные
от 0 до 1 случайные числа
9 2 9 2 0 4 2 6 0.929
9 5 7 3 4 9 0 3 0.204
5 9 1 6 6 5 7 6 0.269
… …

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

Находится таблица, содержащая 500 абсолютно случайных проверенных чисел (взято из книги И. Г. Венецкого, В. И. Венецкой «Основные математико-статистические понятия и формулы в экономическом анализе»).

Алгоритмические ГСЧ

Числа, генерируемые с помощью этих ГСЧ, всегда являются псевдослучайными (или квазислучайными), то есть каждое последующее сгенерированное число зависит от предыдущего:

r i + 1 = f (r i ) .

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

Достоинством данных ГСЧ является быстродействие; генераторы практически не требуют ресурсов памяти, компактны. Недостатки: числа нельзя в полной мере назвать случайными, поскольку между ними имеется зависимость, а также наличие периодов в последовательности квазислучайных чисел.

Рассмотрим несколько алгоритмических методов получения ГСЧ:

  • метод серединных квадратов;
  • метод серединных произведений;
  • метод перемешивания;
  • линейный конгруэнтный метод.

Метод серединных квадратов

Имеется некоторое четырехзначное число R 0 . Это число возводится в квадрат и заносится в R 1 . Далее из R 1 берется середина (четыре средних цифры) — новое случайное число — и записывается в R 0 . Затем процедура повторяется (см. рис. 22.6 ). Отметим, что на самом деле в качестве случайного числа необходимо брать не ghij , а 0.ghij — с приписанным слева нулем и десятичной точкой. Этот факт отражен как на рис. 22.6 , так и на последующих подобных рисунках.

Рис. 22.6. Схема метода серединных квадратов

Недостатки метода: 1) если на некоторой итерации число R 0 станет равным нулю, то генератор вырождается, поэтому важен правильный выбор начального значения R 0 ; 2) генератор будет повторять последовательность через M n шагов (в лучшем случае), где n — разрядность числа R 0 , M — основание системы счисления.

Для примера на рис. 22.6 : если число R 0 будет представлено в двоичной системе счисления, то последовательность псевдослучайных чисел повторится через 2 4 = 16 шагов. Заметим, что повторение последовательности может произойти и раньше, если начальное число будет выбрано неудачно.

Описанный выше способ был предложен Джоном фон Нейманом и относится к 1946 году. Поскольку этот способ оказался ненадежным, от него очень быстро отказались.

Метод серединных произведений

Число R 0 умножается на R 1 , из полученного результата R 2 извлекается середина R 2 * (это очередное случайное число) и умножается на R 1 . По этой схеме вычисляются все последующие случайные числа (см. рис. 22.7 ).

Рис. 22.7. Схема метода серединных произведений

Метод перемешивания

В методе перемешивания используются операции циклического сдвига содержимого ячейки влево и вправо. Идея метода состоит в следующем. Пусть в ячейке хранится начальное число R 0 . Циклически сдвигая содержимое ячейки влево на 1/4 длины ячейки, получаем новое число R 0 * . Точно так же, циклически сдвигая содержимое ячейки R 0 вправо на 1/4 длины ячейки, получаем второе число R 0 ** . Сумма чисел R 0 * и R 0 ** дает новое случайное число R 1 . Далее R 1 заносится в R 0 , и вся последовательность операций повторяется (см. рис. 22.8 ).


Рис. 22.8. Схема метода перемешивания

Обратите внимание, что число, полученное в результате суммирования R 0 * и R 0 ** , может не уместиться полностью в ячейке R 1 . В этом случае от полученного числа должны быть отброшены лишние разряды. Поясним это для рис. 22.8 , где все ячейки представлены восемью двоичными разрядами. Пусть R 0 * = 10010001 2 = 145 10 , R 0 ** = 10100001 2 = 161 10 , тогда R 0 * + R 0 ** = 100110010 2 = 306 10 . Как видим, число 306 занимает 9 разрядов (в двоичной системе счисления), а ячейка R 1 (как и R 0 ) может вместить в себя максимум 8 разрядов. Поэтому перед занесением значения в R 1 необходимо убрать один «лишний», крайний левый бит из числа 306, в результате чего в R 1 пойдет уже не 306, а 00110010 2 = 50 10 . Также заметим, что в таких языках, как Паскаль, «урезание» лишних битов при переполнении ячейки производится автоматически в соответствии с заданным типом переменной.

Линейный конгруэнтный метод

Линейный конгруэнтный метод является одной из простейших и наиболее употребительных в настоящее время процедур, имитирующих случайные числа. В этом методе используется операция mod(x , y ) , возвращающая остаток от деления первого аргумента на второй. Каждое последующее случайное число рассчитывается на основе предыдущего случайного числа по следующей формуле:

r i + 1 = mod(k · r i + b , M ) .

Последовательность случайных чисел, полученных с помощью данной формулы, называется линейной конгруэнтной последовательностью . Многие авторы называют линейную конгруэнтную последовательность при b = 0 мультипликативным конгруэнтным методом , а при b ≠ 0 — смешанным конгруэнтным методом .

Для качественного генератора требуется подобрать подходящие коэффициенты. Необходимо, чтобы число M было довольно большим, так как период не может иметь больше M элементов. С другой стороны, деление, использующееся в этом методе, является довольно медленной операцией, поэтому для двоичной вычислительной машины логичным будет выбор M = 2 N , поскольку в этом случае нахождение остатка от деления сводится внутри ЭВМ к двоичной логической операции «AND». Также широко распространен выбор наибольшего простого числа M , меньшего, чем 2 N : в специальной литературе доказывается, что в этом случае младшие разряды получаемого случайного числа r i + 1 ведут себя так же случайно, как и старшие, что положительно сказывается на всей последовательности случайных чисел в целом. В качестве примера можно привести одно из чисел Мерсенна , равное 2 31 – 1 , и таким образом, M = 2 31 – 1 .

Одним из требований к линейным конгруэнтным последовательностям является как можно большая длина периода. Длина периода зависит от значений M , k и b . Теорема, которую мы приведем ниже, позволяет определить, возможно ли достижение периода максимальной длины для конкретных значений M , k и b .

Теорема . Линейная конгруэнтная последовательность, определенная числами M , k , b и r 0 , имеет период длиной M тогда и только тогда, когда:

  • числа b и M взаимно простые;
  • k – 1 кратно p для каждого простого p , являющегося делителем M ;
  • k – 1 кратно 4, если M кратно 4.

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

Было установлено, что ряд псевдослучайных чисел, генерируемых на основе данных из примера 1, будет повторяться через каждые M /4 чисел. Число q задается произвольно перед началом вычислений, однако при этом следует иметь в виду, что ряд производит впечатление случайного при больших k (а значит, и q ). Результат можно несколько улучшить, если b нечетно и k = 1 + 4 · q — в этом случае ряд будет повторяться через каждые M чисел. После долгих поисков k исследователи остановились на значениях 69069 и 71365 .

Генератор случайных чисел, использующий данные из примера 2, будет выдавать случайные неповторяющиеся числа с периодом, равным 7 миллионам.

Мультипликативный метод генерации псевдослучайных чисел был предложен Д. Г. Лехмером (D. H. Lehmer) в 1949 году.

Проверка качества работы генератора

От качества работы ГСЧ зависит качество работы всей системы и точность результатов. Поэтому случайная последовательность, порождаемая ГСЧ, должна удовлетворять целому ряду критериев.

Осуществляемые проверки бывают двух типов:

  • проверки на равномерность распределения;
  • проверки на статистическую независимость.

Проверки на равномерность распределения

1) ГСЧ должен выдавать близкие к следующим значения статистических параметров, характерных для равномерного случайного закона:

2) Частотный тест

Частотный тест позволяет выяснить, сколько чисел попало в интервал (m r – σ r ; m r + σ r ) , то есть (0.5 – 0.2887; 0.5 + 0.2887) или, в конечном итоге, (0.2113; 0.7887) . Так как 0.7887 – 0.2113 = 0.5774 , заключаем, что в хорошем ГСЧ в этот интервал должно попадать около 57.7% из всех выпавших случайных чисел (см. рис. 22.9 ).

Рис. 22.9. Частотная диаграмма идеального ГСЧ
в случае проверки его на частотный тест

Также необходимо учитывать, что количество чисел, попавших в интервал (0; 0.5) , должно быть примерно равно количеству чисел, попавших в интервал (0.5; 1) .

3) Проверка по критерию «хи-квадрат»

Критерий «хи-квадрат» (χ 2 -критерий) — это один из самых известных статистических критериев; он является основным методом, используемым в сочетании с другими критериями. Критерий «хи-квадрат» был предложен в 1900 году Карлом Пирсоном. Его замечательная работа рассматривается как фундамент современной математической статистики.

Для нашего случая проверка по критерию «хи-квадрат» позволит узнать, насколько созданный нами реальный ГСЧ близок к эталону ГСЧ , то есть удовлетворяет ли он требованию равномерного распределения или нет.

Частотная диаграмма эталонного ГСЧ представлена на рис. 22.10 . Так как закон распределения эталонного ГСЧ равномерный, то (теоретическая) вероятность p i попадания чисел в i -ый интервал (всего этих интервалов k ) равна p i = 1/k . И, таким образом, в каждый из k интервалов попадет ровно по p i · N чисел (N — общее количество сгенерированных чисел).

Рис. 22.10. Частотная диаграмма эталонного ГСЧ

Реальный ГСЧ будет выдавать числа, распределенные (причем, не обязательно равномерно!) по k интервалам и в каждый интервал попадет по n i чисел (в сумме n 1 + n 2 + … + n k = N ). Как же нам определить, насколько испытываемый ГСЧ хорош и близок к эталонному? Вполне логично рассмотреть квадраты разностей между полученным количеством чисел n i и «эталонным» p i · N . Сложим их, и в результате получим:

χ 2 эксп. = (n 1 – p 1 · N ) 2 + (n 2 – p 2 · N ) 2 + … + (n k – p k · N ) 2 .

Из этой формулы следует, что чем меньше разность в каждом из слагаемых (а значит, и чем меньше значение χ 2 эксп. ), тем сильнее закон распределения случайных чисел, генерируемых реальным ГСЧ, тяготеет к равномерному.

В предыдущем выражении каждому из слагаемых приписывается одинаковый вес (равный 1), что на самом деле может не соответствовать действительности; поэтому для статистики «хи-квадрат» необходимо провести нормировку каждого i -го слагаемого, поделив его на p i · N :

Наконец, запишем полученное выражение более компактно и упростим его:

Мы получили значение критерия «хи-квадрат» для экспериментальных данных.

В табл. 22.2 приведены теоретические значения «хи-квадрат» (χ 2 теор. ), где ν = N – 1 — это число степеней свободы, p — это доверительная вероятность, задаваемая пользователем, который указывает, насколько ГСЧ должен удовлетворять требованиям равномерного распределения, или p — это вероятность того, что экспериментальное значение χ 2 эксп. будет меньше табулированного (теоретического) χ 2 теор. или равно ему .

Таблица 22.2.
Некоторые процентные точки χ 2 -распределения
p = 1% p = 5% p = 25% p = 50% p = 75% p = 95% p = 99%
ν = 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
ν = 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
ν = 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
ν = 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
ν = 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
ν = 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
ν = 7 1.239 2.167 4.255 6.346 9.037 14.07 18.48
ν = 8 1.646 2.733 5.071 7.344 10.22 15.51 20.09
ν = 9 2.088 3.325 5.899 8.343 11.39 16.92 21.67
ν = 10 2.558 3.940 6.737 9.342 12.55 18.31 23.21
ν = 11 3.053 4.575 7.584 10.34 13.70 19.68 24.72
ν = 12 3.571 5.226 8.438 11.34 14.85 21.03 26.22
ν = 15 5.229 7.261 11.04 14.34 18.25 25.00 30.58
ν = 20 8.260 10.85 15.45 19.34 23.83 31.41 37.57
ν = 30 14.95 18.49 24.48 29.34 34.80 43.77 50.89
ν = 50 29.71 34.76 42.94 49.33 56.33 67.50 76.15
ν > 30 ν + sqrt(2ν ) · x p + 2/3 · x 2 p – 2/3 + O (1/sqrt(ν ))
x p = –2.33 –1.64 –0.674 0.00 0.674 1.64 2.33

Приемлемым считают p от 10% до 90% .

Если χ 2 эксп. много больше χ 2 теор. (то есть p — велико), то генератор не удовлетворяет требованию равномерного распределения, так как наблюдаемые значения n i слишком далеко уходят от теоретических p i · N и не могут рассматриваться как случайные. Другими словами, устанавливается такой большой доверительный интервал, что ограничения на числа становятся очень нежесткими, требования к числам — слабыми. При этом будет наблюдаться очень большая абсолютная погрешность.

Еще Д. Кнут в своей книге «Искусство программирования» заметил, что иметь χ 2 эксп. маленьким тоже, в общем-то, нехорошо, хотя это и кажется, на первый взгляд, замечательно с точки зрения равномерности. Действительно, возьмите ряд чисел 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, … — они идеальны с точки зрения равномерности, и χ 2 эксп. будет практически нулевым, но вряд ли вы их признаете случайными.

Если χ 2 эксп. много меньше χ 2 теор. (то есть p — мало), то генератор не удовлетворяет требованию случайного равномерного распределения, так как наблюдаемые значения n i слишком близки к теоретическим p i · N и не могут рассматриваться как случайные.

А вот если χ 2 эксп. лежит в некотором диапазоне, между двумя значениями χ 2 теор. , которые соответствуют, например, p = 25% и p = 50%, то можно считать, что значения случайных чисел, порождаемые датчиком, вполне являются случайными.

При этом дополнительно надо иметь в виду, что все значения p i · N должны быть достаточно большими, например больше 5 (выяснено эмпирическим путем). Только тогда (при достаточно большой статистической выборке) условия проведения эксперимента можно считать удовлетворительными.

Итак, процедура проверки имеет следующий вид.

Проверки на статистическую независимость

1) Проверка на частоту появления цифры в последовательности

Рассмотрим пример. Случайное число 0.2463389991 состоит из цифр 2463389991, а число 0.5467766618 состоит из цифр 5467766618. Соединяя последовательности цифр, имеем: 24633899915467766618.

Понятно, что теоретическая вероятность p i выпадения i -ой цифры (от 0 до 9) равна 0.1.

2) Проверка появления серий из одинаковых цифр

Обозначим через n L число серий одинаковых подряд цифр длины L . Проверять надо все L от 1 до m , где m — это заданное пользователем число: максимально встречающееся число одинаковых цифр в серии.

В примере «24633899915467766618» обнаружены 2 серии длиной в 2 (33 и 77), то есть n 2 = 2 и 2 серии длиной в 3 (999 и 666), то есть n 3 = 2 .

Вероятность появления серии длиной в L равна: p L = 9 · 10 –L (теоретическая). То есть вероятность появления серии длиной в один символ равна: p 1 = 0.9 (теоретическая). Вероятность появления серии длиной в два символа равна: p 2 = 0.09 (теоретическая). Вероятность появления серии длиной в три символа равна: p 3 = 0.009 (теоретическая).

Например, вероятность появления серии длиной в один символ равна p L = 0.9 , так как всего может встретиться один символ из 10, а всего символов 9 (ноль не считается). А вероятность того, что подряд встретится два одинаковых символа «XX» равна 0.1 · 0.1 · 9, то есть вероятность 0.1 того, что в первой позиции появится символ «X», умножается на вероятность 0.1 того, что во второй позиции появится такой же символ «X» и умножается на количество таких комбинаций 9.

Частость появления серий подсчитывается по ранее разобранной нами формуле «хи-квадрат» с использованием значений p L .

Примечание: генератор может быть проверен многократно, однако проверки не обладают свойством полноты и не гарантируют, что генератор выдает случайные числа. Например, генератор, выдающий последовательность 12345678912345…, при проверках будет считаться идеальным, что, очевидно, не совсем так.

В заключение отметим, что третья глава книги Дональда Э. Кнута «Искусство программирования» (том 2) полностью посвящена изучению случайных чисел. В ней изучаются различные методы генерирования случайных чисел, статистические критерии случайности, а также преобразование равномерно распределенных случайных чисел в другие типы случайных величин. Изложению этого материала уделено более двухсот страниц.

Читайте также: