Number html: — HTML: HyperText Markup Language

AndrewG — Сайт обо всём

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

В этой статье рассказано, как можно обойти это ограничение браузеров в операционной системе Windows.

Читать далее Как открыть частично заблокированные сайты?

Опубликовано Метки WindowsДобавить комментарий к записи Как открыть частично заблокированные сайты?
  1. Запускаем командную строку от имени администратора
  2. Смотрим список дисков
diskpart
list disk
  1. Находим флешку в списке и форматируем её (в примере флешка — диск 3)
sel disk 3
clean
create part pri
active
format fs=fat32 quick
exit
  1. Монтируем iso файл штатными средствами — дважды щелкнув на него или правой кнопкой по файлу и выбрав «Подключить»
  2. В командной строке копируем данные с одного диска на другой
robocopy  D: E: /s /max:3800000000

где D: — диск-источник (смонтированный iso), E: — флешка.

  1. Если файл \sources\install.wim больше не влезает в fat32, то копируем его с разбивкой
Dism /Split-Image /ImageFile:D:\sources\install.wim /SWMFile:E:\sources\install.swm /FileSize:3800

Источник: https://rutracker.org/forum/viewtopic.php?p=80958393#80958393

Опубликовано Метки WindowsДобавить комментарий к записи Создание загрузочной флешки из iso файла штатными средствами Windows 10

Ошибка MS SQL, возникающая после переименования компьютера. Проверить, точно ли проблема в этом можно узнать выполнив SQL код

     select host_name()
     select @@servername

Если в результате выполнения появятся две разные записи, значит проблема в этом.

Исправить это можно следующим кодом

     EXEC sp_dropserver '<старое_название>';  
     GO  
     EXEC sp_addserver '<новое_название>', local;  
     GO

После этого необходимо перезапустить SQL сервер.

Источник: https://docs.microsoft.com/en-us/answers/questions/498598/invalid-urn-filter-on-server-level-sql-server-erro.html

Опубликовано Метки MS SQL, АдминистрированиеДобавить комментарий к записи Invalid Urn filter on server level SQL Server error

Рынок наводнён подделками камер Sony HDR-CX700E, CX550E, CX100E и других моделей.

Прочитав эту статью вы гарантированно сможете отличить низкокачественную подделку от оригинала по одним фотографиям.

Читать далее Как отличить подделку Sony HDR-CX700E от настоящей

Опубликовано Метки ВидеоДобавить комментарий к записи Как отличить подделку Sony HDR-CX700E от настоящей

Обновить большое количество записей за раз сложно — это долгий процесс, который может вызвать не желательные блокировки и снижение скорости работы базы данных. Чтобы этого избежать, можно разбить обновление данных, например так: (код подходит для MS SQL 2005 и более старших версий)

Читать далее Как обновить большое количество записей MS SQL

Опубликовано Метки MS SQL, АдминистрированиеДобавить комментарий к записи Как обновить большое количество записей MS SQL

После некоторых обновлений в Windows 10 перестаёт работать звук на картах Creative Sound Blaster Audigy 2 (Audigy 2 ZS и прочих разновидностей).

Читать далее Не работает звук на картах серии Creative Sound Blaster Audigy 2 в Windows 10

Опубликовано Метки WindowsДобавить комментарий к записи Не работает звук на картах серии Creative Sound Blaster Audigy 2 в Windows 10

По умолчанию Asp.Net Core 3 генерирует большое количество папок и файлов для разных языков.

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

Читать далее Как убрать лишние папки локализации в ASP.NET Core 3

Опубликовано Метки ASP.NET CoreДобавить комментарий к записи Как убрать лишние папки локализации в ASP.NET Core 3

В этой статье я сравниваю разные директивы Angular по скорости работы и выявляю лучшие, с точки зрения производительности, способы выводить данные.

Читать далее Сравнение производительности разных директив в Angular 2+

Опубликовано Метки Angular2Добавить комментарий к записи Сравнение производительности разных директив в Angular 2+

Microsoft не торопится добавлять поддержку Let’s Encrypt «из коробки» в свои сервисы, а в интернете не так много информации о том, как настроить HTTPS на хостинге Microsoft Azure с Let’s Encrypt и еще меньше информации на русском языке.

Поэтому я решил написать краткую статью о том, как это сделать.

Читать далее Как настроить HTTPS с Let’s Encrypt в Azure

Опубликовано Метки Azure, АдминистрированиеДобавить комментарий к записи Как настроить HTTPS с Let’s Encrypt в Azure

Следующий код позволит удалить большое количество записей с минимальными блокировками. Код подходит для MS SQL 2005 и более старших версий.

Читать далее Как удалить большое количество записей MS SQL

Опубликовано Метки MS SQL, АдминистрированиеДобавить комментарий к записи Как удалить большое количество записей MS SQL

input type=number – управление вводом чисел (NEW)

ⓘ input type=number – управление вводом чисел NEW # T

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

Допустимое содержимое #

пустой (пустой элемент)

Разрешенные атрибуты #

глобальные атрибуты & имя & инвалид & форма & тип★ и автозаполнение и автофокус & список & мин. & Макс & шаг (плавающий) и только для чтения & требуется & значение

ⓘ глобальные атрибуты
Любые атрибуты, разрешенные глобально.
ⓘ имя = строка #
Часть имени пары имя/значение, связанная с этим элемент для отправки формы.
ⓘ отключен = «инвалид» или «» (пустая строка) или пустая #
Указывает, что элемент представляет отключенный контроль.
ⓘ форма = Идентификационная ссылка НОВЫЙ #
Значение я бы атрибут на форма с которым связать элемент.
ⓘ тип = «число» #
Указывает, что его вход элемент точный элемент управления для установки значения элемента в строка, представляющая число.
ⓘ автозаполнение = «включено» или «выключено» НОВЫЙ #
Указывает, представляет ли элемент ввод элемент управления, для которого UA предназначен для хранения введенного значения пользователем (чтобы UA мог предварительно заполнить форму потом).
ⓘ автофокус = «автофокус» или «» (пустая строка) или пустая НОВЫЙ #
Указывает, что элемент представляет элемент управления, к которому UA предназначен для того, чтобы сосредоточить внимание, как только документ загружен.
number.attrs.list»> ⓘ список = Идентификационная ссылка НОВЫЙ #
Значение я бы атрибут на список данных с которым связать элемент.
ⓘ мин = число с плавающей запятой НОВЫЙ #
Ожидаемая нижняя граница для элемента ценность.
ⓘ макс = число с плавающей запятой НОВЫЙ #
Ожидаемая верхняя граница для элемента ценность.
ⓘ шаг = «Любые» или положительное число с плавающей запятой НОВЫЙ #
Задает степень детализации значения элемента ценность.
ⓘ только для чтения = «только для чтения» или «» (пустая строка) или пустая #
Указывает, что элемент представляет элемент управления, значение которого не предназначен для редактирования.
ⓘ требуется = «требуется» или «» (пустая строка) или пустая НОВЫЙ #
Указывает, что элемент является обязательной частью формы подчинение.
ⓘ значение = число с плавающей запятой #
Строка, представляющая число.

Дополнительные ограничения и предупреждения #

  • Ввод интерактивного элемента не должен появляются как потомки элемента a.
  • Ввод интерактивного элемента не должен отображаться как потомок элемента кнопки.
  • Любой элемент ввода, потомок элемента метки с атрибутом for должен иметь Значение идентификатора, которое соответствует этому атрибуту.
  • Атрибут списка «ввода» элемент должен ссылаться на элемент списка данных.
  • Атрибут usemap в элементе ввода устарел. Используйте элемент img вместо элемента ввода для карт изображений.
  • Атрибут align элемента ввода устарел. Вместо этого используйте CSS.

Отсутствие тега #

вход элемент является пустым элементом. Вход элемент должен иметь начальный тег но не должен иметь конечный тег.

Разрешенные родительские элементы #

любой элемент, который может содержать phrasing elements

random — Создание псевдослучайных чисел — Документация по Python 3.11.1

Исходный код: Lib/random.py


Этот модуль реализует генераторы псевдослучайных чисел для различных дистрибутивы.

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

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

Почти все функции модуля зависят от базовой функции random() , которая равномерно генерирует случайное число с плавающей запятой в полуоткрытом диапазоне [0,0, 1,0). питон использует Mersenne Twister в качестве основного генератора. Он производит 53-битную точность плавает и имеет период 2**19937-1. Базовая реализация в C: как быстрый, так и потокобезопасный. Вихрь Мерсенна является одним из наиболее широко уже проверены генераторы случайных чисел. Однако, будучи полностью детерминированный, он не годится для всех целей, и совершенно непригоден для криптографических целей.

Функции, предоставляемые этим модулем, на самом деле являются связанными методами скрытого экземпляр класса random.Random . Вы можете создать собственный экземпляр экземпляры Random , чтобы получить генераторы, которые не разделяют состояние.

Класс Случайный также может быть подклассом, если вы хотите использовать другой базовый генератор собственной разработки: в этом случае переопределите random() , seed() , getstate() и setstate() методов. При желании новый генератор может предоставить метод getrandbits() — этот позволяет randrange() производить выборки в произвольно большом диапазоне.

Модуль random также предоставляет класс SystemRandom , который использует системную функцию os.urandom() для генерации случайных чисел из источников, предоставляемых операционной системой.

Предупреждение

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

См. также

М. Мацумото и Т. Нисимура, «Вихрь Мерсенна: 623-мерный равномерно распределенный генератор псевдослучайных чисел», ACM Transactions on Моделирование и компьютерное моделирование Vol. 8, № 1, январь, стр. 3–30, 1998 г.

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

Бухгалтерские функции

random.seed( a=Нет , версия=2 )

Инициализировать генератор случайных чисел.

Если a опущены или None , используется текущее системное время. Если источники случайности предоставляются операционной системой, они используются вместо системного времени (подробности см. в функции os.urandom() ). при наличии).

Если a является целым числом, оно используется напрямую.

С версией 2 (по умолчанию) str , байт или bytearray объект преобразуется в int , и все его биты используются.

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

Изменено в версии 3.2: Перенесена на схему версии 2, в которой используются все биты начального числа строки.

Изменено в версии 3.11: Семя должен быть одним из следующих типов: NoneType , int , float , str , байтов или байтов массива .

случайный.getstate()

Возвращает объект, фиксирующий текущее внутреннее состояние генератора. Этот объект может быть передан в setstate() для восстановления состояния.

random.setstate( состояние )

состояние должен был быть получен из предыдущего вызова getstate() , и setstate() восстанавливает внутреннее состояние генератора до того состояния, в котором оно было время getstate() было вызвано.

Функции для байтов

random.randbytes( n )

Генерация n случайных байтов.

Этот метод не следует использовать для создания маркеров безопасности. Вместо этого используйте secrets.token_bytes() .

Новое в версии 3.9.

Функции для целых чисел

random.randrange( стоп )
random.randrange( начало , остановка [ шаг ])

Возвращает случайно выбранный элемент из диапазона (начало, стоп, шаг) . Это эквивалентно selection(range(start, stop, step)) , но на самом деле не строит объект диапазона.

Шаблон позиционного аргумента соответствует шаблону диапазон() . Аргументы ключевых слов не следует использовать, поскольку функция может использовать их неожиданным образом.

Изменено в версии 3.2: randrange() является более сложным для создания равномерно распределенных ценности. Раньше он использовал такой стиль, как int(random()*n) , который мог производить слегка неравномерное распределение.

Устарело, начиная с версии 3.10: автоматическое преобразование нецелочисленных типов в эквивалентные целые числа устарел. В настоящее время ранддиапазон (10.0) без потерь преобразуется в диапазон(10) . В будущем это вызовет TypeError .

Устарело, начиная с версии 3.10: Исключение возникает для нецелочисленных значений, таких как randrange(10.5) или randrange('10') будет изменено с ValueError на Ошибка типа .

random.randint( a , b )

Возвращает случайное целое число N такое, что а <= Н <= б . Псевдоним для ранддиапазон(а, b+1) .

random.getrandbits( k )

Возвращает неотрицательное целое число Python с k случайных битов. Этот способ поставляется с генератором MersenneTwister и некоторыми другими генераторами также может предоставить его как необязательную часть API. По мере доступности, getrandbits() позволяет randrange() обрабатывать произвольно большие диапазоны.

Изменено в версии 3.9: этот метод теперь принимает ноль для k .

Функции для последовательностей

случайный.выбор( последовательность )

Возвращает случайный элемент из непустой последовательности seq . Если seq пусто, вызывает IndexError .

random.choices( население , весов=нет , * , cum_weights=нет , k=1 )

Возвращает список элементов размером k , выбранных из совокупности с заменой. Если популяция пуста, возникает IndexError .

Если указана последовательность весов , выбор осуществляется в соответствии с относительные веса. В качестве альтернативы, если задана последовательность cum_weights , выборки производятся в соответствии с совокупными весами (возможно, вычисленными используя itertools. accumulate() ). Например, относительные веса [10, 5, 30, 5] эквивалентны совокупным весам [10, 15, 45, 50] . Внутренне относительные веса преобразуются в кумулятивный вес, прежде чем сделать выбор, поэтому вес экономит работу.

Если не указаны ни весов , ни cum_weights , выполняется выбор с равной вероятностью. Если указана последовательность весов, она должна быть той же длины, что и последовательность популяции . Это TypeError чтобы указать оба веса и cum_weights .

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

Для заданного начального значения функция selections() с одинаковым весом обычно производит другую последовательность, чем повторные вызовы выбор() . Алгоритм, используемый вариантов () , использует плавающую балльная арифметика для внутренней согласованности и скорости. Используемый алгоритм by selection() по умолчанию используется целочисленная арифметика с повторным выбором чтобы избежать небольших смещений из-за ошибки округления.

Новое в версии 3.6.

Изменено в версии 3.9: вызывает ошибку ValueError , если все веса равны нулю.

random.shuffle( x )

Перемешать последовательность х на месте.

Чтобы перетасовать неизменяемую последовательность и вернуть новый перетасованный список, используйте выборка (x, k = len (x)) вместо .

Обратите внимание, что даже для небольших len(x) общее количество перестановок x может быстро вырасти больше, чем период большинства генераторов случайных чисел. Это означает, что большинство перестановок длинной последовательности никогда не могут быть сгенерировано. Например, последовательность длиной 2080 – самая большая из может вписаться в период генератора случайных чисел Mersenne Twister.

Устарело, начиная с версии 3.9, удалено в версии 3.11: необязательный параметр random .

random.sample( популяция , k , * , counts=None )

Возвращает список длиной k уникальных элементов, выбранных из совокупности последовательность. Используется для случайной выборки без замены.

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

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

Повторяющиеся элементы можно указывать по одному или с помощью дополнительного только ключевое слово подсчитывает параметр . Например, образец (['красный', 'синий'], counts=[4, 2], k=5) эквивалентно sample(['красный', 'красный', 'красный', 'красный', 'синий', 'синий'], k=5) .

Чтобы выбрать выборку из диапазона целых чисел, используйте range() объект как аргумент. Это особенно быстро и эффективно для выборки из большого население: выборка (диапазон (10000000), k = 60) .

Если размер выборки превышает размер совокупности, ValueError Поднялся.

Изменено в версии 3.9: Добавлен параметр counts .

Изменено в версии 3.11: Заполнение должно быть последовательностью. Автоматическое преобразование наборов в списки больше не поддерживается.

Реальные распределения

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

случайный.случайный()

Возвращает следующее случайное число с плавающей запятой в диапазоне [0,0, 1,0).

случайный.униформа( а , б )

Возвращает случайное число с плавающей запятой N такое, что a <= N <= b для a <= b и b <= N <= a для b < a .

Значение конечной точки b может быть включено или не включено в диапазон в зависимости от округления с плавающей запятой в уравнении a + (b-a) * random() .

random.triangular( низкий , высокий , режим )

Возвращает случайное число с плавающей запятой N такое, что low <= N <= high и с указанным режимом между этими границами. Нижняя граница и верхняя граница по умолчанию ноль и единица. Аргумент режима по умолчанию соответствует средней точке. между границами, что дает симметричное распределение.

random.betavariate( альфа , бета )

Бета-версия. Условия по параметрам альфа > 0 и бета > 0 . Возвращаемые значения находятся в диапазоне от 0 до 1.

random.expovariate( lambd )

Экспоненциальное распределение. lambd равно 1,0, деленному на желаемое иметь в виду. Оно должно быть ненулевым. (параметр будет называться «лямбда», но это зарезервированное слово в Python.) Возвращаемые значения диапазон от 0 до положительной бесконечности, если лямбд положительный, а от от отрицательной бесконечности до 0, если lambd отрицательно.

random.gammavariate( альфа , бета )

Гамма-распределение. ( Не гамма-функция!) Условия для параметры альфа > 0 и бета > 0 .

Функция распределения вероятностей:

 x ** (альфа - 1) * math.exp(-x / бета)
pdf(х) = --------------------------------------
            math.gamma(альфа) * ​​бета ** альфа
 
random.gauss( мю=0,0 , сигма=1,0 )

Нормальное распределение, также называемое распределением Гаусса. мю это среднее, а сигма — стандартное отклонение. Это немного быстрее, чем функция normalvariate() , определенная ниже.

Примечание о многопоточности: когда два потока вызывают эту функцию одновременно, возможно, что они получат одно и то же возвращаемое значение. Этого можно избежать тремя способами. 1) Пусть каждый поток использует другой экземпляр случайного генератор чисел. 2) Поставьте блокировки вокруг всех вызовов. 3) Используйте медленнее, но потокобезопаснее normalvariate() вместо функции .

Изменено в версии 3.11: мю и сигма теперь имеют аргументы по умолчанию.

random.lognormvariate( мю , сигма )

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

random.normalvariate( мю=0,0 , сигма=1,0 )

Нормальное распределение. мю — среднее значение, а сигма — стандартное отклонение.

Изменено в версии 3.11: мю и сигма теперь имеют аргументы по умолчанию.

random.vonmisesvariate( мю , каппа )

мю — средний угол, выраженный в радианах от 0 до 2* пи и каппа параметр концентрации, который должен быть больше или равен нулю. Если каппа равно нулю, это распределение сводится к равномерному случайному углу в диапазоне от 0 до 2* пи .

random.paretovariate( альфа )

Распределение Парето. альфа — это параметр формы.

random.weibullvariate( альфа , бета )

Распределение Вейбулла. альфа — параметр масштаба, а бета — форма параметр.

Альтернативный генератор

класс случайный. Случайный ([ семя ])

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

Устарело, начиная с версии 3.9: В дальнейшем seed должен быть одного из следующих типов: NoneType , int , float , str , байтов или байтов массива .

класс random. SystemRandom([ семя ])

Класс, использующий функцию os.urandom() для генерации случайных чисел из источников, предоставляемых операционной системой. Доступно не во всех системах. Не зависит от состояния программного обеспечения, а последовательности не воспроизводимы. Соответственно, метод seed() не действует и игнорируется. Методы getstate() и setstate() поднимают NotImplementedError при вызове.

Примечания по воспроизводимости

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

Большинство алгоритмов модуля random и функций заполнения подвержены меняются в разных версиях Python, но два аспекта гарантированно не изменятся:

  • Если добавляется новый метод заполнения, будет использоваться обратно совместимое заполнение. предложил.

  • Метод генератора random() будет продолжать генерировать то же самое последовательность, когда совместимому сидеру дается одно и то же семя.

Примеры

Основные примеры:

 >>> random() # Случайное число с плавающей запятой: 0.0 <= x < 1.0
0,37444887175646646
>>> uniform(2.5, 10.0) # Случайное число с плавающей запятой: 2.5 <= x <= 10.0
3.1800146073117523
>>> expovariate(1 / 5) # Интервал между поступлениями в среднем 5 секунд
5.148957571865031
>>> randrange(10) # Целое число от 0 до 9 включительно
7
>>> randrange(0, 101, 2) # Четное целое от 0 до 100 включительно
26
>>> selection(['win', 'lose', 'draw']) # Один случайный элемент из последовательности
'рисовать'
>>> колода = 'туз, два, три, четыре'.split()
>>> shuffle(deck) # Перемешать список
>>> колода
['четыре', 'два', 'туз', 'три']
>>> sample([10, 20, 30, 40, 50], k=4) # Четыре образца без замены
[40, 10, 50, 30]
 

Симуляции:

 >>> # Шесть вращений рулетки (взвешенная выборка с заменой)
>>> варианты(['красный', 'черный', 'зеленый'], [18, 18, 2], k=6)
['красный', 'зеленый', 'черный', 'черный', 'красный', 'черный']
>>> # Раздать 20 карт без возврата из колоды
>>> # из 52 игральных карт и определить пропорцию карт
>>> # с десятичным значением: десятка, валет, дама или король. 
>>> Dealed = sample(['десятки', 'младшие карты'], counts=[16, 36], k=20)
>>> Dealt.count('десятки') / 20
0,15
>>> # Оценить вероятность выпадения 5 и более решек за 7 спинов
>>> # необъективной монеты, которая выпадает орлом в 60% случаев.
>>> пробная версия():
... вернуть выбор('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5
...
>>> sum(trial() для i в диапазоне (10_000)) / 10_000
0,4169>>> # Вероятность того, что медиана 5 выборок окажется в двух средних квартилях
>>> пробная версия():
... вернуть 2_500 <= отсортировано (выборы (диапазон (10_000), k = 5)) [2] < 7_500
...
>>> sum(trial() для i в диапазоне (10_000)) / 10_000
0,7958
 

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

 # https://www.thoughtco.com/example-of-bootstrapping-3126155
из статистики импортировать fmean как среднее
из случайного выбора импорта
данные = [41, 50, 29, 37, 81, 30, 73, 63, 20, 35, 68, 22, 60, 31, 95]
означает = отсортировано (среднее (выборы (данные, k = len (данные)) для i в диапазоне (100))
print(f'Выборочное среднее значение {mean(data):. 1f} имеет достоверность 90% '
      f'интервал от {средства[5]:.1f} до {средства[94]:.1f}')
 

Пример теста перестановки с повторной выборкой для определения статистической значимости или p-значения наблюдаемой разницы между эффектами препарата и плацебо:

 # Пример из книги Денниса Шаша и Манды Уилсон «Статистика — это просто»
из статистики импортировать fmean как среднее
из случайного импорта в случайном порядке
препарат = [54, 73, 53, 70, 73, 68, 52, 65, 65]
плацебо = [54, 51, 58, 44, 55, 52, 42, 47, 58, 46]
Observed_diff = среднее (препарат) - среднее (плацебо)
п = 10_000
количество = 0
комбинированный = препарат + плацебо
для я в диапазоне (n):
    перемешивание (комбинированное)
    new_diff = среднее (комбинированное [: len (лекарство)]) - среднее (комбинированное [len (лекарственное средство):])
    count += (new_diff >=Observed_diff)
print(f'{n} перестановок меток произвели только {count} экземпляров с разницей')
print(f'по крайней мере столь же экстремально, как наблюдаемая разница {observed_diff:. 1f}.')
print(f'Одностороннее p-значение {count / n:.4f} заставляет нас отклонить нулевое значение')
print(f'гипотеза о том, что нет никакой разницы между лекарством и плацебо.')
 

Моделирование времени прибытия и предоставления услуг для многосерверной очереди:

 из heapq импортировать heapify, heapreplace
эксповариант случайного импорта, гаусс
среднее значение импорта из статистики, квантили
средний_приход_интервал = 5,6
среднее_время_обслуживания = 15,0
stdev_service_time = 3,5
число_серверов = 3
ждет = []
время прибытия = 0,0
серверы = [0.0] * число_серверов # время, когда каждый сервер становится доступным
нагрузить (серверы)
для я в диапазоне (1_000_000):
    время прибытия += экспериментальная переменная (1,0 / средний_интервал_прибытия)
    следующий_сервер_доступный = серверы[0]
    ожидание = макс (0,0, следующий_доступный_сервер - время_прибытия)
    ждет.добавить(подождать)
    service_duration = max(0,0, gauss(average_service_time, stdev_service_time))
    service_completed = время прибытия + ожидание + продолжительность обслуживания
    место для кучи (серверы, service_completed)
print(f'Среднее ожидание: {mean(waits):. 1f} Максимальное ожидание: {max(waits):.1f}')
print('Квартили:', [округление(q, 1) для q в квантилях(ожиданиях)])
 

См. также

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

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

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

Рецепты

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

 def random_product(*args, repeat=1):
    "Случайный выбор из itertools. product(*args, **kwds)"
    pools = [кортеж(пул) для пула в аргументах] * повтор
    вернуть кортеж (карта (случайный выбор, пулы))
def random_permutation (итерируемый, r = нет):
    "Случайный выбор из itertools.permutations(iterable, r)"
    пул = кортеж (повторяемый)
    r = len(pool), если r равно None, иначе r
    возвращаемый кортеж (random.sample (pool, r))
def random_combination (итерируемый, r):
    "Случайный выбор из itertools.combinations(iterable, r)"
    пул = кортеж (повторяемый)
    n = длина (пул)
    индексы = отсортированные (random.sample (диапазон (n), r))
    возвращаемый кортеж (пул [i] для i в индексах)
def random_combination_with_replacement (итерируемый, r):
    "Случайный выбор из itertools.combinations_with_replacement(iterable, r)"
    пул = кортеж (повторяемый)
    n = длина (пул)
    индексы = отсортированные (random.choices (диапазон (n), k = r))
    возвращаемый кортеж (пул [i] для i в индексах)
 

По умолчанию random() возвращает число, кратное 2⁻⁵³ в диапазоне 0,0 ≤ х < 1,0 . Все такие числа расположены через равные промежутки и точно можно представить как Python с плавающей запятой. Однако многие другие представимые числа с плавающей запятой в этом интервале не являются возможным выбором. Например, 0,05954861408025609 не является целым числом, кратным 2⁻⁵³.

Следующий рецепт использует другой подход. Все плавает в интервал возможны выборы. Мантисса происходит от униформы распределение целых чисел в диапазоне 2⁵² ≤ мантисса < 2⁵³ . показатель степени исходит из геометрического распределения, где показатели меньше чем -53 встречаются в два раза реже, чем следующий больший показатель.

 из случайного импорта Random
из математического импорта ldexp
класс FullRandom (случайный):
    определение случайного (я):
        мантисса = 0x10_0000_0000_0000 | self.getrandbits (52)
        экспонента = -53
        х = 0
        пока не х:
            х = self.getrandbits (32)
            экспонента += x.bit_length() - 32
        вернуть ldexp(мантисса, экспонента)
 

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

 >>> fr = FullRandom()
>>> fr.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *