Трем генератор случайных строчки
- Генерация случайных буквенно-цифровых строк в PHP
- Создание случайных чисел в PHP
- Криптографически безопасные случайные целые числа
- Случайные числа с плавающей точкой
- Изменение начального числа генераторов случайных чисел
- Генерация случайных буквенно-цифровых строк в PHP
- Создание перетасованных строк
- Создание случайных строк
- Создание случайных шестнадцатеричных строк
- Генерация криптографически безопасных случайных строк
- Заключительные мысли
- Генерация случайных буквенно-цифровых строк в PHP
- Генерация случайных чисел в PHP
- Криптографически безопасные случайные целые числа
- Случайные числа
- Трем генератор случайных строчки
- Генератор случайного текста
- Генератор случайного текста (Lorem Ipsum)
- Генератор случайных чисел Excel в функциях и анализе данных
- Функция случайного числа в Excel
- Выборка случайных чисел с помощью СЛЧИС
- Функция СЛУЧМЕЖДУ
- Как сделать генератор случайных чисел в Excel
- Генератор случайных чисел нормального распределения
- Готовимся к собеседованию: случайные числа в Python
- Главное, что нужно помнить
- Вопрос 1. Что такое случайные числа?
- Вопрос 2. Как получить случайные числа в Python?
- Вопрос 3. Псевдослучайные числа
- Вопрос 4. Как повторить случайную последовательность?
- Вопрос 5. Красные и зелёные шары
- Вопрос 6. Нечестная монетка
- Вопрос 7. Проиллюстрируйте закон больших чисел
- Вопрос 8. Где применяются случайные числа?
- Случайности не случайны
Генерация случайных буквенно-цифровых строк в PHP
Позвольте мне начать этот пост, сказав, что почти ни одно событие не является случайным. Даже исход классического броска монеты теоретически можно было бы предсказать, если бы мы знали о влиянии каждого фактора, например, трения, гравитации и начальной силы.
То же самое применимо к генерации случайных чисел и буквенно-цифровых строк. Самое лучшее, на что мы можем надеяться, это генерировать числа и строки, которые не следуют шаблону и не могут быть практически предсказаны злоумышленником.
В этом уроке мы рассмотрим различные методы генерации случайных чисел и буквенно-цифровых строк в PHP. Некоторые из них будут криптографически безопасны, а другие предназначены только для случайного использования, например, назначение псевдослучайных имен файлов или создание URL-адресов и предложение имен пользователей.
Создание случайных чисел в PHP
Существуют три различные функции для генерации случайных чисел в PHP. Все они будут принимать минимальное и максимально возможное значение для случайных чисел и выдавать случайное число для вас. Это rand($min, $max) , mt_rand($min, $max) и random_int($min, $max) .
С rand() минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между 0 и значением, возвращаемым функцией getrandmax() . До PHP 7.1.0 эта функция была примерно в четыре раза медленнее, чем mt_rand() . Однако, начиная с PHP 7.1.0, она была создана как псевдоним mt_rand() . В отличие от mt_rand() , вы можете установить значение $max меньше, чем $min , не вызывая ошибки.
С mt_rand() минимальные и максимальные значения целых чисел, которые вы можете генерировать, лежат между 0 и значением, возвращаемым mt_getrandmax() . Функция использует реализацию Mersenne Twister для генерации случайных чисел. Остерегайтесь, до PHP 7.1.0, эта функция реализовывала неверную версию алгоритма для генерации чисел. Однако он был исправлен в более новых версиях.
Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки модульного смещения. Это означает, что для некоторых конкретных значений ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Однако какой-то специализированный код может действительно полагаться на эту предвзятость. Если это так, вы можете использовать более старый алгоритм, вызвав функцию mt_srand() для задания начального числа для генератора случайных чисел и передачи MT_RAND_PHP в качестве значения второго параметра.
Функция mt_rand() имеет период 2 19937 -1, что в основном означает, что в наилучших сценариях вы получаете целых 2 19937 -1 случайных чисел до того, как последовательность начнет повторяться. Следует отметить, что повторение последовательности не совпадает с повторением определенного числа. Другими словами, вы можете получить одно и то же случайное число дважды, но это не значит, что сама последовательность начала повторяться. Примером может служить следующая последовательность:
В приведенной выше последовательности у нас было 1267 два раза на выходе, но это не означает, что после этого вся последовательность начала повторяться. Маловероятно, чтобы такое же число повторялось так быстро в случайной последовательности, но это возможно!
Криптографически безопасные случайные целые числа
Если вы хотите криптографически безопасные псевдослучайные числа, функция random_int() в PHP — ваш лучший выбор. Он будет генерировать случайные числа между предоставленными значениями $min и $max , которые по умолчанию соответствуют PHP_INT_MIN и PHP_INT_MAX . К сожалению, эта функция доступна только с PHP 7.0. Для версий до этого вы можете использовать этот полифилл на GitHub.
Случайные числа с плавающей точкой
Вместо генерации случайных целых чисел вы также можете генерировать числа с плавающей точкой. Это можно сделать легко, просто разделив случайное число на значение, возвращаемое mt_getrandmax() . В следующем примере будет проиллюстрировано, как создать случайное значение с плавающей точкой от 0 до 1 или между любыми другими минимальными и максимальными пределами.
При генерации случайного числа с плавающей точкой между заданными пределами мы убеждаемся, что случайные целые числа не превышают $max — 1 . Таким образом, мы можем быть уверены, что добавление float-части не займет числа выше максимального предела.
Изменение начального числа генераторов случайных чисел
Одна концепция, которая нуждается в небольшом объяснении, — это начальные числа. Проще говоря, это просто цифры, которые можно использовать для инициализации функций rand() и mt_rand() перед генерированием случайных чисел. Функция, которая изменяет начальное число генератора псевдослучайных чисел rand() называется srand($seed) , и функция, которая изменяет начальное число генератора псевдослучайных чисел mt_rand() называется mt_srand($seed, $mode) .
Важно помнить, что предоставление начального значения случайного числа за один раз до вызова rand() и mt_rand() не обязательно приведет к получению более качественных случайных чисел. Фактически, использование одного и того же начального случайного числа каждый раз даст вам одно и то же случайное число!
Изменение случайного числа полезно в ситуациях, когда вы хотите создать случайную, но воспроизводимую последовательность. Следующий фрагмент кода генерирует одну и ту же последовательность случайных чисел при повторном запуске.
Генерирование воспроизводимых случайных последовательностей таким образом может помочь отлаживать программы, которые тестировались с использованием случайных данных — если вы отслеживаете начальное случайное число, вы можете воспроизвести тот же ввод, чтобы выяснить, что пошло не так.
Генерация случайных буквенно-цифровых строк в PHP
Существует множество способов генерации случайных буквенно-цифровых строк, и то, что вы используете, будет зависеть от ваших потребностей.
Создание перетасованных строк
Если вы хотите генерировать случайные буквенно-цифровые строки из фиксированного набора символов, вы можете использовать функцию str_shuffle($string) . Эта функция предоставит вам случайную перетасованную строку. Начиная с PHP 7.1, алгоритм, который определяет случайный порядок символов в выходной строке, был изменен на Mersenne Twister.
Помните, что случайная строка, сгенерированная таким образом, не является криптографически безопасной. Тем не менее, строка по-прежнему будет довольно непредсказуемой для общего использования, например, для генерации случайных имен файлов или URL-адресов. Вот несколько примеров:
В обоих случаях ваш результат, скорее всего, будет разным. В первом случае мы просто перетасовали допустимую строку символов, а затем взяли первые 10 символов. Во втором случае мы добавили «video» в начале сгенерированной строки и «.mp4» в конце.
Этот способ генерации случайных буквенно-цифровых строк очень прост, но у него есть несколько проблем. Например, вы никогда не получите одинаковые символы в своей случайной строке дважды. Кроме того, длина строки случайного вывода может достигать только длины входной строки.
Создание случайных строк
Если проблемы, перечисленные выше, являются неприемлемыми, вы можете посмотреть на некоторые другие реализации. Следующий код поможет решить эти проблемы.
Вы можете изменить его, чтобы добавить определенные суффиксы и префиксы к сгенерированной случайной строке. Люди, которые используют PHP 7, могут улучшить генерацию строк дальше, используя криптографически защищенную функцию random_int() вместо mt_rand() .
Создание случайных шестнадцатеричных строк
Если вы хотите генерировать случайные шестнадцатеричные строки в PHP, вы также можете использовать либо md5($string, $raw_output) , либо функцию sha1($string, $raw_output) . Обе они будут генерировать хэши входной строки.
Вы будете получать уникальные хэши, пока вход уникален. Этого можно добиться, используя результат функции, такой как time() в качестве входного параметра. По умолчанию md5() вернет шестнадцатеричную строку с 32 символами, а sha1() вернет 40-значную шестнадцатеричную строку. Их можно обрезать до определенной длины, используя функцию substr() .
Ниже приведен пример вывода, возвращаемого этими функциями:
Как вы можете видеть, генерация случайных и уникальных шестнадцатеричных строк длиной до 40 символов очень проста в PHP.
Генерация криптографически безопасных случайных строк
Три функции генерации случайных буквенно-цифровых строк, которые мы обсуждали до сих пор, не являются криптографически безопасными. К счастью, PHP также имеет функцию random_bytes($length) для генерации криптографически защищенных псевдослучайных байтов. Параметр $length определяет длительность строки вывода.
Как только вы получите выход в виде случайных байтов, вы можете использовать функцию bin2hex() , чтобы преобразовать их в шестнадцатеричные значения. Это удвоит длину строки.
Другая функция, которую вы можете использовать для генерации криптографически безопасных случайных байтов, — openssl_random_pseudo_bytes($length, &$crypto_strong) . Значение второго параметра можно использовать для определения того, будет ли генерироваться строка вывода с использованием криптографически безопасного алгоритма или нет.
Заключительные мысли
В этом уроке мы рассмотрели генерацию случайных чисел и буквенно-цифровых строк в PHP. Генерация случайных чисел может быть полезна в самых разных ситуациях, например, в играх, в которых вы должны порождать вражеских игроков или произвольно давать пользователям некоторые подсказки о письмах, чтобы они могли сформировать целое слово.
Подобно случайным числам, генерация случайных буквенно-цифровых строк также может быть весьма полезной во многих случаях. С помощью str_shuffle() вы можете выбрать, какой набор символов появится в ваших случайных строках. С помощью sha1() и md5() вы можете легко генерировать случайные шестнадцатеричные последовательности, а с помощью random_bytes() вы можете генерировать криптографически защищенные строки. Это позволит вам генерировать осмысленные, но рандомизированные имена файлов и имена пользователей, которые трудно подобрать.
Надеюсь, вам понравился этот урок. Если у вас есть какие-либо вопросы, не стесняйтесь задавать их в комментариях.
Генерация случайных буквенно-цифровых строк в PHP
Позвольте мне начать этот пост с того, что почти ни одно событие не является действительно случайным. Даже исход классического броска монеты можно было бы теоретически предсказать, если бы мы знали влияние каждого из факторов, таких как трение в воздухе, гравитация и начальная сила.
То же самое применимо к генерации случайных чисел и буквенно-цифровых строк. Лучшее, на что мы можем надеяться, — это генерировать числа и строки, которые не соответствуют шаблону и не могут быть практически предсказаны злоумышленником.
В этом уроке мы рассмотрим различные методы генерации случайных чисел и буквенно-цифровых строк в PHP. Некоторые из них будут криптографически безопасными, в то время как другие предназначены только для случайного использования, например, для присвоения псевдослучайных имен файлов или создания URL-адресов и предложения имен пользователей.
Генерация случайных чисел в PHP
В PHP есть три разные функции для генерации случайных чисел. Все они примут минимально и максимально возможное значение для случайных чисел и выведут случайное число для вас. Это rand($min, $max) , mt_rand($min, $max) и random_int($min, $max) .
С помощью rand() минимальное и максимальное значения целых чисел, которые вы можете сгенерировать, лежат между 0 и значением, возвращаемым getrandmax() . До PHP 7.1.0 эта функция была примерно в четыре раза медленнее, чем mt_rand() . Однако, начиная с PHP 7.1.0, он стал псевдонимом mt_rand() . В отличие от mt_rand() , вы можете установить значение $max меньше, чем $min не вызывая ошибки.
С помощью mt_rand() минимальное и максимальное значения целых чисел, которые вы можете сгенерировать, лежат между 0 и значением, возвращаемым mt_getrandmax() . Он использует реализацию Mersenne Twister для генерации случайных чисел. Обратите внимание: до PHP 7.1.0 эта функция реализовала неверную версию алгоритма для генерации чисел. Тем не менее, это было исправлено в более новых версиях.
Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки смещения по модулю. Это означает, что для некоторых конкретных семян ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Тем не менее, некоторый специализированный код может действительно полагаться на это смещение Если это так, вы можете использовать более старый начальный алгоритм, вызвав mt_srand() для MT_RAND_PHP генератора случайных чисел и передав MT_RAND_PHP в качестве значения второго параметра.
Функция mt_rand() имеет период 2 19937 -1, что в основном означает, что в лучших случаях вы получаете до 2 19937 -1 случайных чисел, прежде чем последовательность начнет повторяться. Следует отметить, что повторение последовательности не совпадает с повторением определенного числа. Другими словами, вы можете получить одно и то же случайное число дважды, но это не означает, что сама последовательность начала повторяться. Следующая последовательность является примером:
В приведенной выше последовательности у нас было 1267 дважды на выходе, но это не значит, что вся последовательность начала повторяться после этого. Маловероятно, что такое же число будет повторяться так скоро в случайной последовательности, но это возможно!
Криптографически безопасные случайные целые числа
Если вы хотите криптографически защищенные псевдослучайные числа, random_int() в PHP — ваш лучший выбор. Он будет генерировать случайные числа между предоставленными значениями $min и $max , которые по умолчанию PHP_INT_MIN и PHP_INT_MAX . К сожалению, эта функция доступна только начиная с PHP 7.0. Для версий до этого вы можете использовать этот polyfill на GitHub .
Случайные числа
Вместо генерации случайных целых чисел вы также можете генерировать числа с плавающей точкой. Это можно сделать без особых усилий, просто разделив случайное число на значение, возвращаемое mt_getrandmax() . В следующем примере будет показано, как генерировать случайное число с плавающей точкой между 0 и 1 или между любыми другими минимальными и максимальными пределами.
Трем генератор случайных строчки
Иногда может потребоваться сгенерировать случайные строки в ячейках, например разные пароли. В этой статье мы пытаемся показать вам некоторые приемы создания различных случайных строк в Excel.
Следующие формулы могут помочь вам создать случайные числа, буквы и буквенно-цифровые значения в диапазоне в Excel.
1. Чтобы создать случайное 5-значное число от 10000 до 99999, используйте эту формулу: = СЛУЧМЕЖДУ (10000,99999) , и нажмите Enter key, в ячейке будет отображаться 5-значное число, затем выберите ячейку и перетащите маркер заполнения в диапазон, который вы хотите содержать эту формулу, был сгенерирован диапазон 5-значных чисел, см. снимки экрана:
Внимание: вы можете изменить аргументы по своему усмотрению.
2. Чтобы создать случайную букву, используйте эту формулу: = СИМВОЛ (СЛУЧМЕЖДУ (65,90)) . Эта формула может генерировать случайную букву от a до z, если вам нужно создать четыре случайных буквы, вам нужно использовать символ &, чтобы добавить буквы. Такие как = СИМВОЛ (RANDBETWEEN (65,90)) & CHAR (RANDBETWEEN (65,90)) & CHAR (RANDBETWEEN (65,90)) & CHAR (RANDBETWEEN (65,90)) . Затем вы получите четыре случайных буквы, а затем перетащите дескриптор заполнения в диапазон, который вы хотите содержать эту формулу. Смотрите скриншот:
Заметки:
(1.) Формула действительна в Excel 2007, 2010 и 2013, но не в Excel 2003. В Excel 2003 используйте формулу = СИМВОЛ (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65)) & CHAR (INT (RAND () * 25 + 65))
(2.) В формуле 65 — A, а 90 — Z.
(3.) Вы можете использовать символ &, чтобы добавить необходимое количество букв.
3. Чтобы создать случайную буквенно-цифровую строку, состоящую из двух букв и двух цифр, используйте эту формулу: = СИМВОЛ (СЛУЧАЙНОМУ (65,90)) И СИМВОЛ (СЛУЧМЕЖДУ (65,90)) & СЛУЧМЕЖДУ (10,99) И вы получите следующие строки в диапазоне, содержащем две буквы и две цифры:
Внимание: вы можете изменить аргументы, чтобы получить цифру, как вам нужно, и использовать &, чтобы добавить количество букв.
Легко генерировать случайные строки символов в выбранном диапазоне:
Легко сгенерировать случайные символьные строки с определенными символами и длиной текста с помощью Вставить случайные данные полезности Kutools for Excel.
Загрузите Kutools для Excel прямо сейчас! (30-дневная бесплатная трасса)
Если вы считаете, что приведенные выше формулы сложны и проблематичны, следующий код VBA может вам намного проще. Пожалуйста, сделайте так:
1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модуль, и вставьте следующий макрос в Модуль окно.
3. Затем сохраните и закройте код, в ячейке введите эту функцию = RandomizeF (x, y) для вставки случайной строки символов с минимальной длиной x символов и максимальной длиной y символов.
4. В этом примере я буду использовать функцию = RandomizeF (5,10) для создания символьной строки от 5 до 10 символов. Затем нажмите Enter , выберите ячейку и перетащите маркер заполнения в диапазон, который вы хотите содержать эту функцию. И случайные буквенно-цифровые и определенные символьные строки, которые были созданы от 5 до 10 символов. Смотрите скриншот:
Есть ли способ сгенерировать случайные строки с буквами, цифрами, специальными символами и т. Д.? Kutools for Excel‘s Вставить случайные данные — отличный генератор случайных чисел (и текстовой строки), который может генерировать случайные числа, случайную текстовую строку или случайные числа, текст и символы со всеми видами символов, включая буквы, числа, специальные символы, пробелы и даже настраиваемые строки.
Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.
1. Выберите диапазон, в котором вы будете генерировать случайные строки, а затем щелкните Kutools > Вставить > Вставить случайные данные. Смотрите скриншот:
3. В Вставить случайные данные диалоговое окно, нажмите строка вкладку и выберите нужный тип символов, затем укажите длину строки в Длина строки поле и, наконец, щелкните OK кнопка. Смотрите скриншот:
Затем выбранный диапазон был заполнен случайными строками символов.
Чаевые: если вы хотите сгенерировать или вставить указанные строки данных форматирования (например, . @. . com) в диапазон, вы также можете использовать эту утилиту. Сделайте так:
1. Выберите диапазон, укажите символы и установите флажок По маске. Затем введите указанные строки данных, которые вам нужны. Смотрите скриншот:
Внимание: С помощью ? для обозначения цифры случайного символа в конечных указанных строках форматирования.
2. Затем нажмите OK or Применить. Указанные строки данных форматирования были сгенерированы случайным образом следующим образом. Смотрите скриншот:
Kutools for Excel‘s Вставить случайные данные может помочь вам легко выполнить следующие операции в ячейках диапазона.
- Сгенерировать или вставить случайные числа в диапазон
- Сгенерировать или вставить случайную дату в диапазон
- Создание или вставка настраиваемого списка в диапазон
Если вы хотите получить 30-дневную бесплатную пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Генератор случайного текста
Генератор случайного текста (Lorem Ipsum)
Чтобы сгенерировать текст Lorem Ipsum для вашего использования, просто введите желаемое количество слов и выберите любой из стилей под ним. Вы также можете использовать этот инструмент, чтобы быстро понять, сколько места занимают текстовые отрывки с разным количеством слов, например, чтобы увидеть, не будет ли описание из 500 слов выталкивать другой контент слишком далеко вниз на странице.
Есть множество причин, по которым дизайнер может захотеть включить рыбо текст в свою работу, не используя «настоящую» копию. Например, возможно, окончательная копия еще не готова, или дизайнер хочет поэкспериментировать с разной длиной, прежде чем решить, какой длины должен быть текст. Иногда дизайнер хочет использовать текст-заполнитель, потому что он не хочет слишком сильно влиять на предполагаемый контент – копия на домашней странице веб-сайта может часто обновляться, поэтому дизайнеру не следует слишком основывать свой дизайн на его первой версии, поскольку более поздние обновления текста могут вызвать несоответствия между новым текстом и любыми визуальными элементами, которые все еще относятся к более старой версии.
Еще одним преимуществом генератор случайного текста является то, что он мгновенно распознается как текст-заполнитель, поэтому его можно использовать в примерах продуктов, чтобы у покупателей не сложилось впечатление, что текст, показанный в примере, является частью конечного продукта. Это делает его полезным для веб-дизайнеров, которые хотят создавать шаблоны веб-сайтов, не опасаясь, что клиент будет думать, что любой включенный текст должен остаться. Если вы создаете собственные продукты с текстом, вы также можете использовать Lorem Ipsum в своих примерах, чтобы клиенты знали, что текст-заполнитель будет заменен копией, которую они предоставят.
Веб-сайты, использующие профессиональные системы шаблонов. Платформы коммерческих публикаций и системы управления контентом гарантируют, что вы можете показывать разный текст, разные данные, используя один и тот же шаблон. Когда речь идет об управлении сотнями статей, продуктовых страниц для интернет-магазинов или профилей пользователей в социальных сетях, все они потенциально имеют разные размеры, форматы, правила для разных элементов, которые могут нарушаться, согласованный дизайн может иметь непредвиденные последствия и сильно отличаться чем ожидалось.
Это довольно сложная проблема, но простое выполнение без приветствия текста не решит ее. Использование тестовых элементов реального содержания и данных в проектах поможет, но нет гарантии, что каждая странность будет обнаружена и исправлена. Ты хочешь быть уверенным? Затем потребуется прототип или бета-версия сайта с реальным контентом, опубликованным с реальной CMS, но вы не зайдете так далеко, пока не пройдете начальный цикл проектирования.
Lorem Ipsum на самом деле полезен на этапе проектирования, поскольку он фокусирует наше внимание на тех местах, где контент представляет собой динамический блок, исходящий от CMS (в отличие от статических элементов контента, которые всегда остаются неизменными). Блоки Lorem Ipsum с диапазоном количества символов обеспечивают очевидное напоминание о необходимости проверить и еще раз проверить соответствие дизайна и модели содержимого.
Подводя итог, если текст отвлекает внимание от дизайна, это потому, что он не соответствует задаче.
Типографы прошлого не придумали концепцию фиктивного текста, потому что люди думали, что контент – это несущественная витрина, предназначенная только для использования дизайнерами, которым не нужно беспокоиться о чтении. Генератор случайного текста необходим, потому что слова очень важны. Просто заполните страницу черновиком о бизнесе клиента, и он действительно прочитает его и прокомментирует. Они будут к этому стремиться. Сделайте это неправильно, и черновик может сорвать вашу проверку дизайна.
Просить клиента не обращать внимания на случайный текст несложно, поскольку в первую очередь это не имеет смысла, что достаточно скоро ограничит любой начальный интерес. Однако попробуйте сказать клиенту, чтобы он игнорировал черновик, и вы замышляете то, чего не сможете выиграть. Всякий раз, когда черновик появляется на собрании, возникают непонятные вопросы.
Lorem ipsum был задуман как текст-заполнитель, отформатированный определенным образом, чтобы обеспечить представление графических элементов в документах без необходимости в официальной копии. Использование Lorem Ipsum позволяет дизайнерам составлять макеты и форму контента до того, как контент будет создан, что дает больше свободы процессу проектирования и производства.
Широко распространено мнение, что история Lorem Ipsum берет свое начало с Цицерона в I веке до нашей эры и его текста De Finibus bonorum et malorum . Этот философский труд, также известный как « На концах добра и зла» , был разделен на пять книг. Lorem Ipsum, который мы знаем сегодня, является производным от частей первой книги Liber Primus и ее обсуждения гедонизма, слова которого были изменены, добавлены и удалены, чтобы сделать его бессмысленным и неподходящим для латыни. Точно неизвестно, когда текст приобрел свою нынешнюю традиционную форму. Однако ссылки на фразу «lorem ipsum» можно найти в издании классической библиотеки Леба 1914 года De Finibus в разделах 32 и 33.
Именно в этом издании De Finibus Х. Ракман перевел текст. Следующий отрывок взят из раздела 32:
“qui dolorem ipsum, quia dolor sit amet conctetur adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem”.
Это отчасти узнаваемо как современный стандарт Lorem Ipsum и было переведено на:
«И снова нет никого, кто любит, преследует или желает получить боль сам по себе, потому что это боль, но иногда возникают обстоятельства, в которых тяжелый труд и боль могут доставить ему какое-то большое удовольствие».
В начале 1960-х годов Lorem Ipsum стал популярным благодаря изготовителю шрифтов Letraset, который использовал его в своих рекламных кампаниях. Letraset предлагал страницы Lorem Ipsum в виде листов для переноса бумаги, которые широко использовались в докомпьютерную эпоху для макетов. Эти страницы передачи, известные как Letraset Body Type , были показаны в рекламе компании и их популярном каталоге.
Lorem Ipsum была повторно представлена в 1980-х годах корпорацией Aldus, разработавшей программное обеспечение для настольных изданий. Их самый известный продукт PageMaker поставлялся с предустановленными графическими и текстовыми шаблонами, содержащими версию псевдолатинского языка.
Генератор случайных чисел Excel в функциях и анализе данных
У нас есть последовательность чисел, состоящая из практически независимых элементов, которые подчиняются заданному распределению. Как правило, равномерному распределению.
Сгенерировать случайные числа в Excel можно разными путями и способами. Рассмотрим только лучше из них.
Функция случайного числа в Excel
- Функция СЛЧИС возвращает случайное равномерно распределенное вещественное число. Оно будет меньше 1, больше или равно 0.
- Функция СЛУЧМЕЖДУ возвращает случайное целое число.
Рассмотрим их использование на примерах.
Выборка случайных чисел с помощью СЛЧИС
Данная функция аргументов не требует (СЛЧИС()).
Чтобы сгенерировать случайное вещественное число в диапазоне от 1 до 5, например, применяем следующую формулу: =СЛЧИС()*(5-1)+1.
Возвращаемое случайное число распределено равномерно на интервале [1,10].
При каждом вычислении листа или при изменении значения в любой ячейке листа возвращается новое случайное число. Если нужно сохранить сгенерированную совокупность, можно заменить формулу на ее значение.
- Щелкаем по ячейке со случайным числом.
- В строке формул выделяем формулу.
- Нажимаем F9. И ВВОД.
Проверим равномерность распределения случайных чисел из первой выборки с помощью гистограммы распределения.
- Сформируем «карманы». Диапазоны, в пределах которых будут находиться значения. Первый такой диапазон – 0-0,1. Для следующих – формула =C2+$C$2.
- Определим частоту для случайных чисел в каждом диапазоне. Используем формулу массива .
- Сформируем диапазоны с помощью знака «сцепления» (=»[0,0-«&C2&»]»).
- Строим гистограмму распределения 200 значений, полученных с помощью функции СЛЧИС ().
Диапазон вертикальных значений – частота. Горизонтальных – «карманы».
Функция СЛУЧМЕЖДУ
Синтаксис функции СЛУЧМЕЖДУ – (нижняя граница; верхняя граница). Первый аргумент должен быть меньше второго. В противном случае функция выдаст ошибку. Предполагается, что границы – целые числа. Дробную часть формула отбрасывает.
Пример использования функции:
Случайные числа с точностью 0,1 и 0,01:
Как сделать генератор случайных чисел в Excel
Сделаем генератор случайных чисел с генерацией значения из определенного диапазона. Используем формулу вида: =ИНДЕКС(A1:A10;ЦЕЛОЕ(СЛЧИС()*10)+1).
Сделаем генератор случайных чисел в диапазоне от 0 до 100 с шагом 10.
Из списка текстовых значений нужно выбрать 2 случайных. С помощью функции СЛЧИС сопоставим текстовые значения в диапазоне А1:А7 со случайными числами.
Воспользуемся функцией ИНДЕКС для выбора двух случайных текстовых значений из исходного списка.
Чтобы выбрать одно случайное значение из списка, применим такую формулу: =ИНДЕКС(A1:A7;СЛУЧМЕЖДУ(1;СЧЁТЗ(A1:A7))).
Генератор случайных чисел нормального распределения
Функции СЛЧИС и СЛУЧМЕЖДУ выдают случайные числа с единым распределением. Любое значение с одинаковой долей вероятности может попасть в нижнюю границу запрашиваемого диапазона и в верхнюю. Получается огромный разброс от целевого значения.
Нормальное распределение подразумевает близкое положение большей части сгенерированных чисел к целевому. Подкорректируем формулу СЛУЧМЕЖДУ и создадим массив данных с нормальным распределением.
Себестоимость товара Х – 100 рублей. Вся произведенная партия подчиняется нормальному распределению. Случайная переменная тоже подчиняется нормальному распределению вероятностей.
При таких условиях среднее значение диапазона – 100 рублей. Сгенерируем массив и построим график с нормальным распределением при стандартном отклонении 1,5 рубля.
Используем функцию: =НОРМОБР(СЛЧИС();100;1,5).
Программа Excel посчитала, какие значения находятся в диапазоне вероятностей. Так как вероятность производства товара с себестоимостью 100 рублей максимальная, формула показывает значения близкие к 100 чаще, чем остальные.
Перейдем к построению графика. Сначала нужно составить таблицу с категориями. Для этого разобьем массив на периоды:
- Определим минимальное и максимальное значение в диапазоне с помощью функций МИН и МАКС.
- Укажем величину каждого периода либо шаг. В нашем примере – 1.
- Количество категорий – 10.
- Нижняя граница таблицы с категориями – округленное вниз ближайшее кратное число. В ячейку Н1 вводим формулу =ОКРВНИЗ(E1;E5).
- В ячейке Н2 и последующих формула будет выглядеть следующим образом: =ЕСЛИ(G2;H1+$E$5;»»). То есть каждое последующее значение будет увеличено на величину шага.
- Посчитаем количество переменных в заданном промежутке. Используем функцию ЧАСТОТА. Формула будет выглядеть так:
На основе полученных данных сможем сформировать диаграмму с нормальным распределением. Ось значений – число переменных в промежутке, ось категорий – периоды.
График с нормальным распределением готов. Как и должно быть, по форме он напоминает колокол.
Сделать то же самое можно гораздо проще. С помощью пакета «Анализ данных». Выбираем «Генерацию случайных чисел».
О том как подключить стандартную настройку «Анализ данных» читайте здесь.
Заполняем параметры для генерации. Распределение – «нормальное».
Жмем ОК. Получаем набор случайных чисел. Снова вызываем инструмент «Анализ данных». Выбираем «Гистограмма». Настраиваем параметры. Обязательно ставим галочку «Вывод графика».
График с нормальным распределением в Excel построен.
Готовимся к собеседованию: случайные числа в Python
Случайность управляет миром, а вы будете управлять случайностью. С помощью Python, конечно.
Чтобы имитировать бросок кубика в игре или предсказать загруженность интернет-ресурса, нужны случайные числа.
Мы разобрали самые популярные вопросы о случайных числах в Python с собеседований. Чаще всего для ответа достаточно написать код и кратко его прокомментировать. Да пребудет с вами Великий Рандом!
Главное, что нужно помнить
- Случайные числа — это последовательность чисел, которая подчиняется одному из законов распределения.
- Главных распределений два: равномерное, с графиком в виде горизонтальной линии, и нормальное, с графиком-колоколом (его ещё называют гауссианой).
- Основная Python-библиотека для генерации случайных чисел называется random.
- Большинство случайных чисел в программировании — не случайные, а псевдослучайные.
С некоторых пор утверждает, что он data scientist. В предыдущих сезонах выдавал себя за математика, звукорежиссёра, радиоведущего, переводчика, писателя. Кандидат наук, но не точных. Бесстрашно пишет о Data Science и программировании на Python.
Вопрос 1. Что такое случайные числа?
Что нужно помнить: случайные числа — это математическое понятие, и их не следует путать с обыденными, произвольными числами. Случайное число в математике и программировании — это:
- число из определённого диапазона,
- у которого есть определённая вероятность выпадения.
Другими словами, существует закон или правило, которое называется «функцией распределения» или просто «распределением». И это самое распределение «раздаёт» каждому числу из диапазона определённую вероятность выпадения.
В качестве диапазона значений математикам и программистам привычнее всего использовать диапазон действительных чисел от 0 до 1, но это могут быть и целые числа от 1 до 6, как в игральном кубике, или от 100 до 1 000 000 — и так далее. Главное, что и распределение, и диапазон известны заранее, а само число нет.
Итого: случайные числа — это искусственно полученная последовательность чисел из определённого диапазона, которая подчиняется одному из законов распределения случайной величины.
Распределения бывают разные. Так, равномерное распределение — это когда любое значение из диапазона имеет одну и ту же вероятность выпадения (как у игрального кубика или монетки). Если же распределение, например, нормальное (гауссиана), то чаще выпадают числа из середины диапазона. Есть даже таблица — она поможет выбрать подходящее распределение.
Вопрос 2. Как получить случайные числа в Python?
Основных способов два: с помощью «родной» библиотеки random и с помощью модуля numpy.random из библиотеки numpy.
Прежде чем интервьюер придерётся, не забудьте сказать, что и random, и numpy.random — генераторы псевдослучайных чисел (о них ниже). Истинно случайные числа можно получить, например, c сайта Random.Org: там они генерируются с помощью атмосферного шума.
Библиотека random имеет меньший объём, чем numpy.random, и проще в использовании. Зато numpy.random содержит дополнительные распределения для научных вычислений, а также функции для генерирования целых массивов случайных данных.
В первой строчке мы импортировали default_rng — это «генератор генераторов» случайных массивов из модуля numpy.random. Во второй — создали экземпляр такого генератора и присвоили ему имя rng. В третьей использовали его метод standard_normal, чтобы получить numpy-массив из 10 случайных чисел, и записали массив в переменную vals.
Вопрос 3. Псевдослучайные числа
Псевдослучайные числа — это, если очень упрощать, последовательность чисел, которая только выглядит случайной, а на самом деле каждое число в ней определяется алгоритмом, то есть вычисляется. Псевдослучайные последовательности цикличны: через какой-то период все числа повторяются в точности в том же порядке.
Библиотека random и модуль numpy.random содержат в себе генератор не истинно случайных, а именно псевдослучайных чисел.
Генерировать истинно случайные числа дорого и сложно. Основная трудность состоит в том, чтобы гарантировать отсутствие какого-либо цикла, правила или алгоритма. Чаще всего истинно случайные числа берут из физического мира: шумов атмосферы, детекторов частиц, колебаний электрического тока или из космического излучения.
То, что псевдослучайная последовательность, в отличие от истинно случайной, воспроизводима, очень удобно для практических задач: часто нужно подать на вход ту же самую последовательность второй раз, чтобы посмотреть, как работает программа после добавления новых фич.
Наиболее популярный современный алгоритм генерирования псевдослучайных чисел разработан в 1997 году и носит красивое название «Вихрь Мерсенна». Он используется и в Python. Последовательность чисел, порождённая им, статистически неотличима от истинно случайной и имеет период, равный числу с шестью тысячами знаков. Этого хватает для задач симуляции и моделирования, но с точки зрения криптографии такая последовательность всё равно небезопасна: для успешной атаки достаточно иметь сравнительно небольшую сгенерированную этим генератором последовательность.
Вопрос 4. Как повторить случайную последовательность?
Истинно случайную последовательность повторить невозможно. Но для повторения псевдослучайных чисел в обеих основных библиотеках — random и numpy.random есть функция seed (), которая отвечает за инициализацию («посев») последовательности.
Передавая аргумент 42 в функцию seed(), мы указываем конкретное место в псевдослучайной последовательности, поэтому команда random.random() в третьей и последней строках выдаёт одинаковое число — оно идёт первым после точки, помеченной как seed (42).
В seed() можно передать целые и дробные числа, а также строки и кортежи. Если оставить скобки пустыми, то в качестве аргумента seed() возьмёт текущее системное время.
Аналогичная функция есть в модуле numpy.random:
Вопрос 5. Красные и зелёные шары
Часто на собеседованиях просят написать программу, связанную с вероятностями. Например, код для численной проверки ответа к задачке «Какова вероятность вытащить зелёный шар из мешка, в котором 1 зелёный и 4 красных шара».
(Ответ ⅕ = 0,2).
Иными словами, если 100 раз вынимать шар из мешка, возвращая его обратно, количество выпадения зелёных шаров должно приближаться к 20. Вариант кода для проверки:
Функция random.choice() случайным образом выбирает значение из заданного диапазона — списка из одного « green» и четырёх « red». Код выведет количество зелёных шаров после 100 попыток.
Вопрос 6. Нечестная монетка
Другой вариант: предположим, у нас есть так называемая «нечестная» монетка, где орёл ( H, «heads») и решка ( T, «tails») выпадают не с вероятностью ½, как положено, а по-другому: орёл с вероятностью p(H) = 0,2, а решка, соответственно, p(T) = 0,8.
Тогда код для проверки будет выглядеть примерно так:
Здесь используется другая функция, choices, в которую вместе со списком значений можно в параметре weights передавать вероятности их выпадения.
Код выведет количество выпавших орлов после 10 000 бросков.
К слову: задачи на нечестные монетки, наряду с поиском n-ного числа Фибоначчи и нахождением угла между часовой и минутной стрелками, кочуют из одного собеседования в другое уже не первый десяток лет. Есть вероятность, что одна из них попадётся и вам.
Вопрос 7. Проиллюстрируйте закон больших чисел
Закон больших чисел (ЗБЧ) говорит, что при увеличении количества попыток случайная величина стремится к своему математическому ожиданию — всё усредняется. Подробнее об этом можно прочитать в нашей статье об основах математики для Data Science.
Код для иллюстрации ЗБЧ на примере честной монетки выглядит так:
Вначале мы импортировали уже знакомый нам модуль random и модуль matplotlib.plt — он нужен для рисования простых графиков. После этого определили переменные: общее количество бросков ( total_flips), список из значений вероятностей ( numerical_probability), количество выпавших орлов ( H_count).
Теперь в цикле мы 5 000 раз «подбрасываем» монетку. Если выпадает орёл (« H»), то делим текущее количество выпавших орлов на текущее количество бросков и добавляем итоговое значение в конец списка numerical_probability. В конце рисуем график.
Чем больше бросков, тем ближе к 0,5 вероятность выпадения орла. Всё, как и предсказывает закон больших чисел.
Вопрос 8. Где применяются случайные числа?
В логистике: при расчётах страховых запасов товара — чтобы склад внезапно не опустел или, наоборот, не пришлось держать избыток товара слишком долго. Принято считать, что поведение покупателей случайно и подчиняется одной из разновидностей нормального распределения. В особо запущенных случаях считается случайным даже поведение поставщиков.
В науке: с помощью метода Монте-Карло учёные моделируют поведение частиц во фрактальном окружении в трёхмерном пространстве. Метод Монте-Карло основан на использовании большого количества генерируемых случайных чисел.
В микроэлектронике: броуновское движение частиц играет важную роль в формировании пористости плёночного покрытия полупроводников при напылении его на поверхность. Просчитать это на компьютере гораздо дешевле, чем экспериментировать с реальным покрытием, поэтому сначала его рассчитывают, а потом запускают в производство.
В криптографии: для генерации шифровальных ключей. Здесь становится особенно важным различие между псевдослучайными и истинно случайными числами.
Случайности не случайны
Так говорил мастер Угвэй , и мы теперь понимаем его чуть лучше: он жил довольно долго, мог заметить период повторения одних и тех же событий и догадаться, что все случайности в этом мире на самом деле псевдослучайны. У нас с вами времени меньше, поэтому придётся изучать документацию: random, numpy.random.
А чтобы никакая псевдослучайность не помешала вам успешно пройти собеседование, приходите в наш Шаолинь на курс «Профессия Python-разработчик». Вы изучите random, numpy и ещё много приёмов пайтонического кунг-фу, а мы поможем с наставниками, единомышленниками и, конечно, с трудоустройством.
Источник: