Запускаем табличный редактор Excel.
Делаем заголовок – это наши «иксы».
Вызываем надстройку: Данные – Анализ данных. В диалоговом окне выбираем генератор случайных чисел.
Рис. Общий план демонстрации
Задаём число переменных. Имеется ввиду число столбцов. В электронных таблицах каждая переменная – это, прежде всего, столбец. Это же касается и баз данных – там тоже есть таблицы, и данные в таблицах тоже расположены по столбцам. Нас интересует одна колонка случайных чисел. Пускай у нас будет 10 тысяч значений.
В разделе «Распределение» выбираем Uniform / Равномерное.
Диапазон значений от 0 до 1.
Параметр Random seed в русском переводе звучит как «Случайное рассеивание». На самом деле, это НАЧАЛЬНОЕ СОСТОЯНИЕ ГЕНЕРАТОРА. Этот параметр задаётся целым числом. Мы в качестве примера напишем 1234.
Диапазон для вывода результатов – Output range. Мы говорим, что надо выводить случайные числа, начиная с указанной ячейки.
Машина немного подумает и сгенерирует нам заданное количество случайных чисел.
После этого мы их округлим и посчитаем вероятность нашего события.
Событие А заключается в том, что у нас выпала единичка. Мы пишем ROUND, даём ссылку на соседнюю ячейку и говорим: ноль знаков после запятой.
Рис. Моделирование нулей и единиц
Конечно, есть некоторые сомнения по поводу округления числа, равного точно 0,5. Проделаем опыт: напишем 0,5 и округлим.
Сделаем откат и возвращаемся к исходным данным.
Теперь нам предстоит заполнить второй столбец. Берём правый нижний уголок ячейки – это маркер автозаполнения. Дважды щёлкаем по нему – и вся колонка заполняется нулями и единицами. Чтобы это проверить, нажимаем [Ctrl+Down]. Перемещаемся самый низ нашего столбца – в последнюю заполненную ячейку. Мы видим 10001 строку. Это последняя строка. Возвращаемся в начало: [Ctrl+Home].
Теперь подсчитаем вероятность. Я напомню, что это только оценка вероятности. Поскольку наши данные – это нули и единицы, оценка вероятности – это среднее значение по столбцу А. Среднее значение в английском варианте Excel называется AVERAGE, в русском варианте – СРЗНАЧ. Указываем диапазон ячеек: щёлкаем первую ячейку, затем нажимаем комбинацию клавиш [Ctrl+Shift+Down]. Мы отметили все ячейки. Нажимаем клавишу [Enter] или [Ввод].
Вот наш результат – мы получили число, которое очень близко к 0,5. Но это не ровно 0,5. Просто достаточно близко к теоретическому значению.
В чём особенность этого метода? Мы генерируем числа с помощью надстройки. Если мы хотим сгенерировать новый набор данных, нам нужно будет снова вызвать «Анализ данных». Мы вызываем генератор, задаём новое состояние генератора, нажимаем [OK]. Нас предупреждают, что ячейки вообще-то заняты предыдущими числами. Машин подумает и заполнит наши 10 тысяч ячеек. Обратим внимание на новую оценку вероятности.
Такой эксперимент вам предстоит проделать несколько раз – в рамках знакомства с данным материалом.
Подведём итоги. Мы вызвали генератор случайных чисел с помощью надстройки, установили равномерное распределение, округлили и нашли оценку вероятности – как среднее из нулей и единиц. Что это значит применительно к нашей формуле? В числителе находится количество единиц – это число событий, которые нас интересуют. В данном случае сумма единиц – это количество событий, когда выпал орёл. В знаменателе – общее количество событий. В нашем примере это 10000. Так что если у нас нули и единицы и мы считаем среднее из этого количества данных, мы автоматом получаем оценку нашей вероятности. Она называется ЧАСТОТА.
Если оценка вероятности получена по реальным данным, её называют частотой. Конечно, это просто количество – в отличие от физики. В физике частота – это число событий в единицу времени или число оборотов в единицу времени. В физике частоту измеряют в Герцах, а в статистике – в «единицах», в «штуках», в количестве объектов или событий. Так что это частота в разном понимании.
Есть и другой способ генерирования случайных чисел. Это готовая функция RAND / СЛЧИС. Мы его тоже можем разобрать. Внешне всё будет выглядеть точно так же, как в предыдущем примере: столбец «иксов» и столбец нулей и единиц, затем оценка частоты, то есть вероятность, см. рис.
Рис. Демонстрация генератора-функции
Здесь есть некоторые тонкости.
Чтобы взять содержимое одной ячейки и заполнить диапазон ячеек, можно просто взяться за уголок маркера и протянуть вниз. Но чтобы дотянуть до ячейки под номером 10001, придётся потратить пару минут. А теперь представьте, что нужно скопировать формулу в миллион ячеек. Такое заполнение – надолго. Да ещё можно промахнуться.
Но не всё так плохо. У нас в запасе есть другой приём: мы вводим формулу в одну ячейку, затем указываем в окошке адреса ячейки нужный диапазон А2:А10001. В результате мы выделяем этот диапазон. Затем в верхнем меню выбираем Home – Editing – Fill – Down. Это означает «заполнить вниз от текущей ячейки». Так мы заполняем столбец нужного размера, см. рис.
Рис. Заполнение столбца
Вторую колонку мы заполняем с помощью маркера автозаполнения – как в первом примере.
Рис. План демонстрации
Начнём демонстрацию. Переходим в Excel. Создаём новую страничку. В первой колонке у нас находится «икс». Мы пишем RAND и пустые скобки. Это функция без параметров. Она создает нам одно случайное число. Щёлкаем по ячейке. В окне адреса укажем диапазон адресов от А2 до А10001. Видим, что у нас выделился диапазон. Дальше нужно его заполнить: Home – Editing – Fill – Down. Мы заполнили весь диапазон. Можем проверить [Ctrl+Down]. Переходим в последнюю ячейку А10001, дальше ничего нет.
Нас интересует событие А. Мы пишем ROUND. Обратите внимание, что первый столбец автоматически пересчитывается. Округляем ячейку A2, ставим запятую и ноль. В русском варианте аргументы функции разделяются другим значком (точка с запятой), потому что в русском варианте символ запятой – это десятичный разделитель. Он разделяет целую и дробную части числа. Двойной щелчок по маркеру автозаполнения – получили столбец нулей и единиц.
Находим нашу частоту, то есть оценку вероятности случайного числа 0,5. Вызываем функцию AVERAGE.
Сохраняем файл – нажимаем [CTRL+S] несколько раз. Каждый раз при сохранении файла значения пересчитываются.
Как видим, для того чтобы вызвать генерацию нового набора данных, достаточно внести любые изменения или просто обновить / сохранить таблицу. При этом мы явно не указываем начальное состояние генератора. Просто при каждом новом обращении в функции RAND текущее состояние генератора меняется.
В одних случаях именно это интересно. В других случаях, наоборот, требуется работать с одним набором данных и не изменять его. Это первая разница между генератором в надстройке и генератором-функцией.
Есть и другое отличие – это количество данных, которые можно сгенерировать. У надстройки есть ограничения. Попробуйте до него дойти.
Надо понимать, что у самого Excel есть ограничение по количеству строк на одном листе электронной таблицы. Их может быть чуть больше 1 миллиона. То есть полтора или два миллиона строк вы уже не сможете создать на одном листе.
Но если вы захотите сгенерировать свой «разрешённый» миллион случайных чисел с помощью надстройки, то может и не получиться. Попробуйте выяснить, до какого предела можно генерировать с помощью надстройки. Это тоже интересный эксперимент.
Итак, вам предстоит повторить показанные опыты двумя способами – как мы с вами разбирали – с помощью надстройки Анализ данных и с помощью функции RAND, см. рис.
Рис. План задания
Вам предстоит сгенерировать 10000 случайных чисел и повторить этот опыт 10 раз. Затем записать ваши оценки вероятности. Можете записать от руки в конспект или приложить копию экрана, чтобы показать, что вы это проделали.
Вот таким образом мы с вами знакомимся с понятием вероятности. Вероятность существует в теории. Мы на неё можем посмотреть через обработку данных, но каждый раз это число будет немножко отличаться. Она будет близкой к настоящему, правильному, теоретическому значению. Но каждый раз она будет отличаться. Это явление природы называется словом ОЦЕНКА. Как видим, оценка тоже содержит себе некоторую случайность, некоторую непредсказуемость, маленькую случайную ошибку. Насколько она маленькая, что с этим делать и как дальше работать? Эти тонкости и будут темой следующего занятия.
В данном занятии мы посмотрели на так называемые псевдослучайные числа – то есть они на самом деле не совсем случайные. Нам только кажется что они случайные. Генерируется последовательность, которая зависит от начального состояния. Мы увидим этот инструмент и в Excel, и в любых других программных генераторах, в том числе, и в питоне. То есть в Python.
Проведём ещё один эксперимент. Нам предстоит как сгенерировать случайные числа в электронной таблице Libre Office Calc. Calc – это сокращение от слова «Калькулятор».
Основная идея всё та же – вызвать генератор через надстройку. Немного отличается верхнее меню, но разобраться будет несложно.
Рис. План демонстрации
В верхнем меню выбираем Sheet – Fill Cells – Fill Random Number, см. рис.
Рис. Вызов генератора случайных чисел
Появляется меню настройки генератора случайных чисел, см. рис. Выбираем равномерное распределение: Distribution – Uniform. Значения Minimum / Maximum: от нуля до единицы. Диапазон адресов ячеек Cell range – А2:А10001. Как видим, здесь у нас имеется дополнительная галочка Enable custom seed, если мы вручную задаём начальное состояние генератора.
Есть дополнительная возможность сразу же и округлять полученные случайные числа – Enable rounding. Но мы просто повторим предыдущие шаги, чтобы увидеть, насколько похожи все электронные таблицы.
Рис. Настройка генератора случайных чисел
Далее мы округляем эти числа и находим среднее значение, см. рис. Функции такие же, как в Excel. Это обеспечивает почти полную совместимость на уровне файлов, включая названия функций.
Рис. Результаты моделирования
Как можно видеть, и в этом примере оценка вероятности приблизительно соответствует точному, теоретическому значению 0,5.
Проведём ещё один эксперимент – по примеру того, что мы проделали в Excel с вызовом функции RAND, см. рис.
Рис. План демонстрации
Вводим функцию RAND в ячейку А2.
Затем вызываем заполнение диапазона нашей формулой: Sheet – Fill Cells – Fill Down, см. рис.
Рис. Заполнение ячеек
Рис. Результаты моделирования
Как видим, мы можем заполнять ячейки почти так же, как мы это проделали в Excel. Названия функций тоже совпадают. Во многом это объясняется тем, что пользователи ожидают совместимость на уровне файлов. А в файлах могут быть не только числа, но и вызовы функций. В нашем примере это функции RAND, ROUND и AVERAGE.
В результате мы тоже получили оценку вероятности около 0,5. И тоже с небольшой погрешностью. И эта случайность тоже заметна при многократном повторении опыта.
Когда мы вызываем генератор через функцию, электронная таблица пересчитывает все значения при любых изменениях, при обновлении таблицы и при сохранении файла. Все оценки будут вокруг теоретического значения 0,5, но все будут немного разными – плюс-минус.
Вам предстоит проделать показанные эксперименты. Повторите этот опыт несколько раз, чтобы убедиться, что оценка вероятности немного меняется. Но в среднем оценка «крутится» вокруг точного значения, см. рис.
Рис. План задания
Следующий эксперимент мы проделаем в питоне. Или в Python – если больше нравятся английские названия.
Здесь мы с вами познакомимся с некоторыми приемами работы в диалоговой среде Anaconda / Jupyter Lab и некоторыми командами Python.
Рис. Программа в Jupyter Lab
В первой строчке мы импортируем библиотеку numpy и назначаем ей псевдоним np – для краткости. Это библиотека для работы с числовыми массивами. В обычном, базовом питоне мы тоже можем создавать различные объекты. Однако, numpy позволяет работать с матрицами, то есть с массивами / таблицами чисел. Это могут быть столбцы, или строки, или таблички чисел. Все они условно называются массивами.
Дальше мы будем обращаться к функциям из этой библиотеки np.
Вторая строка – вызов генератора случайных чисел с равномерным распределением. В аргументах функции rand указываем размеры массива, который хотим получить: 10000 строк и 1 столбец.
Следующим шагом мы округляем эти числа с помощью функции round.
Далее находим среднее значение для всего этого массива чисел. Это делает функция mean. Полученную оценку вероятности выводим на экран.
Здесь надо отметить один любопытный момент. Функции для вычисления среднего значения могут называться MEAN и AVERAGE. Могут быть и другие названия. Причём это происходит в рамках одного пакета программ – если это делали в разное время и разные команды разработчиков. За этим приходится следить. Конечно же, мы всегда можем посмотреть справку под названием help. Там же обычно даются примеры использования команды.
Запускаем нашу программу несколько раз и наблюдаем, что выводится на экран в качестве оценки вероятности.
Мы можем проделать наши опыты с теми же результатами и в облачном сервисе Google Colaboratory, см. рис.
Рис. Программма в Google Colab
Внешне всё очень похоже на Anaconda / Jupyter Lab. Мы получаем практически стопроцентную совместимость с программой, отлаженной на локальном компьютере. Тем не менее, иногда бывает тонкости. Colab работает с самыми последними версиями библиотек. И нам не требуется постоянно их обновлять вручную.
Итак, мы запускаем Colab. Нас спрашивают, хотим ли мы открыть существующий файл или создать новый. Создаем новый блокнот.
Вводим первую команду, нажимаем комбинацию клавиш [Shift+Enter]. Проходит некоторое время на запуск – в правой верхней части экрана выводится сообщение про соединение с виртуальной машиной: Connect.
О проекте
О подписке