/
fedorhub
/
Python_Le
Обзор
Документация
Войти
/
fedorhub
/
Python_Le
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python/random-11-04/index.htm
1 696 строк
209 KB
fedorhub
upload files
17 дек 2025, 14:35
17 дек 2025, 14:35
50de53d
Код
Авторство
О чём код?
<!DOCTYPE html> <html class="no-js" lang="ru-RU"> <head> <meta http-equiv="content-type" content="text/html" charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" > <link rel="profile" href="http://gmpg.org/xfn/11"> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <script> MathJax = { tex: { inlineMath: [['$','$'],['\\(','\\)']], processEscapes: true }, options: { ignoreHtmlClass: 'tex2jax_ignore|editor-rich-text' } }; </script> <!-- This site is optimized with the Yoast SEO plugin v23.8 - https://yoast.com/wordpress/plugins/seo/ --> <title>Модуль random. Часть 4 | Программирование на Питоне</title> <meta name="description" content="Рассмотрим применение модулей random и itertools для перемешивания данных и расчета количества комбинаций (перестановок и сочетаний)." /> <link rel="canonical" href="https://www.dmitrymakarov.ru/python/random-11-04/" /> <meta property="og:locale" content="ru_RU" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Модуль random. Часть 4 | Программирование на Питоне" /> <meta property="og:description" content="Рассмотрим применение модулей random и itertools для перемешивания данных и расчета количества комбинаций (перестановок и сочетаний)." /> <meta property="og:url" content="https://www.dmitrymakarov.ru/python/random-11-04/" /> <meta property="og:site_name" content="Машинное обучение" /> <meta property="article:modified_time" content="2024-10-12T18:23:54+00:00" /> <meta property="og:image" content="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes.jpg" /> <meta property="og:image:width" content="2374" /> <meta property="og:image:height" content="399" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:label1" content="Примерное время для чтения" /> <meta name="twitter:data1" content="4 минуты" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.dmitrymakarov.ru/python/random-11-04/","url":"https://www.dmitrymakarov.ru/python/random-11-04/","name":"Модуль random. Часть 4 | Программирование на Питоне","isPartOf":{"@id":"https://www.dmitrymakarov.ru/#website"},"primaryImageOfPage":{"@id":"https://www.dmitrymakarov.ru/python/random-11-04/#primaryimage"},"image":{"@id":"https://www.dmitrymakarov.ru/python/random-11-04/#primaryimage"},"thumbnailUrl":"https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-1024x172.jpg","datePublished":"2023-02-01T13:25:42+00:00","dateModified":"2024-10-12T18:23:54+00:00","description":"Рассмотрим применение модулей random и itertools для перемешивания данных и расчета количества комбинаций (перестановок и сочетаний).","breadcrumb":{"@id":"https://www.dmitrymakarov.ru/python/random-11-04/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https://www.dmitrymakarov.ru/python/random-11-04/"]}]},{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://www.dmitrymakarov.ru/python/random-11-04/#primaryimage","url":"https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes.jpg","contentUrl":"https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes.jpg","width":2374,"height":399},{"@type":"BreadcrumbList","@id":"https://www.dmitrymakarov.ru/python/random-11-04/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Главная страница","item":"https://www.dmitrymakarov.ru/"},{"@type":"ListItem","position":2,"name":"Программирование на Питоне","item":"https://www.dmitrymakarov.ru/python/"},{"@type":"ListItem","position":3,"name":"Модуль random. Часть 4"}]},{"@type":"WebSite","@id":"https://www.dmitrymakarov.ru/#website","url":"https://www.dmitrymakarov.ru/","name":"Машинное обучение","description":"","publisher":{"@id":"https://www.dmitrymakarov.ru/#/schema/person/3fc221e2d391cc5cfd9d31c9c251c2a4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.dmitrymakarov.ru/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":["Person","Organization"],"@id":"https://www.dmitrymakarov.ru/#/schema/person/3fc221e2d391cc5cfd9d31c9c251c2a4","name":"DmitryMakarov","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://www.dmitrymakarov.ru/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/2c5f922d990c667feffc00f99517cc0e?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/2c5f922d990c667feffc00f99517cc0e?s=96&d=mm&r=g","caption":"DmitryMakarov"},"logo":{"@id":"https://www.dmitrymakarov.ru/#/schema/person/image/"}}]}</script> <!-- / Yoast SEO plugin. --> <link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> <link rel="alternate" type="application/rss+xml" title="Машинное обучение » Лента" href="https://www.dmitrymakarov.ru/feed/" /> <link rel="alternate" type="application/rss+xml" title="Машинное обучение » Лента комментариев" href="https://www.dmitrymakarov.ru/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.dmitrymakarov.ru\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.6.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link rel='stylesheet' id='mci-footnotes-no-tooltips-pagelayout-none-css' href='https://www.dmitrymakarov.ru/wp-content/plugins/footnotes/css/footnotes-nottbrpl0.min.css?ver=2.7.3' type='text/css' media='all' /> <link rel='stylesheet' id='urvanov_syntax_highlighter-css' href='https://www.dmitrymakarov.ru/wp-content/plugins/urvanov-syntax-highlighter/css/min/urvanov_syntax_highlighter.min.css?ver=2.8.37' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-theme-familiar-my-copy-css' href='https://www.dmitrymakarov.ru/wp-content/uploads/urvanov-syntax-highlighter/themes/familiar-my-copy/familiar-my-copy.css?ver=2.8.37' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-font-consolas-css' href='https://www.dmitrymakarov.ru/wp-content/plugins/urvanov-syntax-highlighter/fonts/consolas.css?ver=2.8.37' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://www.dmitrymakarov.ru/wp-includes/css/dist/block-library/style.min.css?ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='ultimate_blocks-cgb-style-css-css' href='https://www.dmitrymakarov.ru/wp-content/plugins/ultimate-blocks/dist/blocks.style.build.css?ver=672da5208b2cc' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #121212;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--dark-gray: #333;--wp--preset--color--medium-gray: #555;--wp--preset--color--light-gray: #777;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 16px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 24px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 18px;--wp--preset--font-size--larger: 28px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='ub-extension-style-css-css' href='https://www.dmitrymakarov.ru/wp-content/plugins/ultimate-blocks/src/extensions/style.css?ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='mcluhan-fonts-css' href='https://www.dmitrymakarov.ru/wp-content/themes/mcluhan/assets/css/fonts.css?ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='fontawesome-css' href='https://www.dmitrymakarov.ru/wp-content/themes/mcluhan/assets/css/font-awesome.css?ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='mcluhan-style-css' href='https://www.dmitrymakarov.ru/wp-content/themes/mcluhan/style.css?ver=2.1.1' type='text/css' media='all' /> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="urvanov_syntax_highlighter_js-js-extra"> /* <![CDATA[ */ var UrvanovSyntaxHighlighterSyntaxSettings = {"version":"2.8.37","is_admin":"0","ajaxurl":"https:\/\/www.dmitrymakarov.ru\/wp-admin\/admin-ajax.php","prefix":"urvanov-syntax-highlighter-","setting":"urvanov-syntax-highlighter-setting","selected":"urvanov-syntax-highlighter-setting-selected","changed":"urvanov-syntax-highlighter-setting-changed","special":"urvanov-syntax-highlighter-setting-special","orig_value":"data-orig-value","debug":""}; var UrvanovSyntaxHighlighterSyntaxStrings = {"copy":"Copied to the clipboard","minimize":"Click To Expand Code"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-content/plugins/urvanov-syntax-highlighter/js/min/urvanov_syntax_highlighter.min.js?ver=2.8.37" id="urvanov_syntax_highlighter_js-js"></script> <style>#ub_table-of-contents-af3e9276-912f-4552-9a0f-bc98f4a9a5cb{ }#ub_table-of-contents-af3e9276-912f-4552-9a0f-bc98f4a9a5cb .ub_table-of-contents-header{ text-align: left; } #ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45{ }#ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45 .wp-block-ub-content-toggle-accordion{ border-color: #f1f1f1; } #ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45 .wp-block-ub-content-toggle-accordion-title-wrap{ background-color: #f1f1f1; } #ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45 .wp-block-ub-content-toggle-accordion-title{ color: #000000; } #ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45 .wp-block-ub-content-toggle-accordion-toggle-wrap{ color: #000000; } .ub-content-toggle-title-9b78d45f-e05e-4c47-9d9b-b45950b79e21 > a{ color: inherit; }#ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1{ }#ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1 .wp-block-ub-content-toggle-accordion{ border-color: #f1f1f1; } #ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1 .wp-block-ub-content-toggle-accordion-title-wrap{ background-color: #f1f1f1; } #ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1 .wp-block-ub-content-toggle-accordion-title{ color: #000000; } #ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1 .wp-block-ub-content-toggle-accordion-toggle-wrap{ color: #000000; } .ub-content-toggle-title-90d807cb-5c48-40da-8b35-effa7476aee6 > a{ color: inherit; }#ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0{ }#ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0 .wp-block-ub-content-toggle-accordion{ border-color: #f1f1f1; } #ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0 .wp-block-ub-content-toggle-accordion-title-wrap{ background-color: #f1f1f1; } #ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0 .wp-block-ub-content-toggle-accordion-title{ color: #000000; } #ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0 .wp-block-ub-content-toggle-accordion-toggle-wrap{ color: #000000; } .ub-content-toggle-title-bff49097-0323-42e4-afe2-6de3dac8113f > a{ color: inherit; }#ub_divider_78bd2283-65a8-4db5-b3de-4fc3517da5c8{ }#ub_divider_78bd2283-65a8-4db5-b3de-4fc3517da5c8 .ub_divider{ border-top:2px solid #ccc; margin-top: 20px; margin-bottom: 20px; width: 60%; } #ub_divider_dd9713ba-314a-4038-a147-0ed557e1b32e{ }#ub_divider_dd9713ba-314a-4038-a147-0ed557e1b32e .ub_divider{ border-top:1px solid #ccc; margin-top: 20px; margin-bottom: 20px; width: 60%; } </style> <!-- Customizer CSS --> <style type="text/css"> body .site-header { background-color:#004235; }.social-menu.desktop { background-color:#004235; }.social-menu a:hover { color:#004235; }.social-menu a.active { color:#004235; }.mobile-menu-wrapper { background-color:#004235; }.social-menu.mobile { background-color:#004235; }.mobile-search.active { background-color:#004235; } </style> <!-- /Customizer CSS --> <script>jQuery( 'html' ).removeClass( 'no-js' ).addClass( 'js' );</script> <style type="text/css">.broken_link, a.broken_link { text-decoration: line-through; }</style><style type="text/css" id="custom-background-css"> body.custom-background { background-color: #fff9ef; } </style> <link rel="icon" href="https://www.dmitrymakarov.ru/wp-content/uploads/2021/08/cropped-wp-favicon-512-32x32.png" sizes="32x32" /> <link rel="icon" href="https://www.dmitrymakarov.ru/wp-content/uploads/2021/08/cropped-wp-favicon-512-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://www.dmitrymakarov.ru/wp-content/uploads/2021/08/cropped-wp-favicon-512-180x180.png" /> <meta name="msapplication-TileImage" content="https://www.dmitrymakarov.ru/wp-content/uploads/2021/08/cropped-wp-favicon-512-270x270.png" /> <style type="text/css" media="all"> .footnotes_reference_container {margin-top: 24px !important; margin-bottom: 0px !important;} .footnote_container_prepare > p {border-bottom: 1px solid #aaaaaa !important;} </style> </head> <body class="page-template page-template-full-width-page-template page-template-full-width-page-template-php page page-id-18517 page-child parent-pageid-1374 custom-background full-width-template"> <a class="skip-link button" href="#site-content">Перейти к содержимому</a> <header class="site-header group"> <p class="site-title"><a href="https://www.dmitrymakarov.ru" class="site-name">Машинное обучение</a></p> <div class="nav-toggle"> <div class="bar"></div> <div class="bar"></div> </div> <div class="menu-wrapper"> <ul class="main-menu desktop"> </ul> </div><!-- .menu-wrapper --> <div class="social-menu desktop"> <ul class="social-menu-inner"> <li class="social-search-wrapper"><a href="https://www.dmitrymakarov.ru/?s="></a></li> </ul><!-- .social-menu-inner --> </div><!-- .social-menu --> </header><!-- header --> <div class="mobile-menu-wrapper"> <ul class="main-menu mobile"> <li class="toggle-mobile-search-wrapper"><a href="#" class="toggle-mobile-search">Поиск</a></li> </ul><!-- .main-menu.mobile --> </div><!-- .mobile-menu-wrapper --> <div class="mobile-search"> <div class="untoggle-mobile-search"></div> <form role="search" method="get" class="search-form" action="https://www.dmitrymakarov.ru/"> <label class="screen-reader-text" for="search-form-672da520a5191">Поиск:</label> <input type="search" id="search-form-672da520a5191" class="search-field" placeholder="Введите запрос" value="" name="s" autocomplete="off" /> </button> </form> <div class="mobile-results"> <div class="results-wrapper"></div> </div> </div><!-- .mobile-search --> <div class="search-overlay"> <form role="search" method="get" class="search-form" action="https://www.dmitrymakarov.ru/"> <label class="screen-reader-text" for="search-form-672da520a5229">Поиск:</label> <input type="search" id="search-form-672da520a5229" class="search-field" placeholder="Введите запрос" value="" name="s" autocomplete="off" /> </button> </form> </div><!-- .search-overlay --> <main class="site-content" id="site-content"> <article class="post-18517 page type-page status-publish hentry missing-thumbnail"> <header class="entry-header section-inner"> <h1 class="entry-title">Модуль random. Часть 4</h1> </header><!-- .entry-header --> <div class="entry-content section-inner"> <p class="has-light-gray-color has-text-color"><a href="https://www.dmitrymakarov.ru/">Все курсы</a> > <a href="https://www.dmitrymakarov.ru/python/">Программирование на Питоне</a> > Занятие 11 (часть 4)</p> <p>Рассмотрим способы расчета комбинаций с помощью Питона. Помимо модуля random изучим модуль itertools.</p> <div class="wp-block-ub-table-of-contents-block ub_table-of-contents" id="ub_table-of-contents-af3e9276-912f-4552-9a0f-bc98f4a9a5cb" data-linktodivider="false" data-showtext="show" data-hidetext="hide" data-scrolltype="auto" data-initiallyhideonmobile="false" data-initiallyshow="true"><div class="ub_table-of-contents-header-container"><div class="ub_table-of-contents-header"> <div class="ub_table-of-contents-title"><strong>Содержание занятия</strong></div></div></div><div class="ub_table-of-contents-extra-container"><div class="ub_table-of-contents-container ub_table-of-contents-1-column "><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#0-kombinatorika-v-pitone>Комбинаторика в Питоне</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#1-nprandomshuffle-i-nprandompermutation>np.random.shuffle() и np.random.permutation()</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#2-modul-itertools>Модуль itertools</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#3-perestanovki>Перестановки</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#4-perestanovki-bez-zameny>Перестановки без замены</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#5-perestanovki-bez-povtoreniy>Перестановки без повторений</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#6-razmeshcheniya>Размещения</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#7-perestanovki-s-povtoreniyami>Перестановки с повторениями</a></li></ul></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#8-perestanovki-s-zamenoy>Перестановки с заменой</a></li></ul></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#9-sochetaniya>Сочетания</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#10-sochetaniya-bez-povtoreniy>Сочетания без повторений</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#11-sochetaniya-s-povtoreniyami>Сочетания с повторениями</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#12-binomialnye-koeffitsienty>Биномиальные коэффициенты</a></li></ul></li></ul></li></ul></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#13-podvedem-itog>Подведем итог</a><ul><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#14-voprosy-dlya-zakrepleniya>Вопросы для закрепления</a></li><li><a href=https://www.dmitrymakarov.ru/python/random-11-04/#15-otvety-na-voprosy>Ответы на вопросы</a></li></ul></li></ul></div></div></div> <p class="has-text-align-center has-white-color has-text-color has-background" style="background-color:#004235"><a href="https://colab.research.google.com/drive/1VX5VlmmBXhFqdY4uRxjE1a3uwAqNyNTh?usp=sharing" target="_blank" rel="noreferrer noopener">Продолжим работать в том же блокноте</a>⧉</p> <h2 class="wp-block-heading" id="0-kombinatorika-v-pitone">Комбинаторика в Питоне</h2> <h3 class="wp-block-heading" id="1-nprandomshuffle-i-nprandompermutation">np.random.shuffle() и np.random.permutation()</h3> <p>Обе эти функции перемешивают (shuffle) или переставляют (permute) элементы списка или массива. Основное отличие заключается в том, что <strong>np.random.shuffle()</strong> <em>изменяет</em> исходный массив, а <strong>np.random.permutation()</strong> <em>создает «перемешанную» копию</em> исходного массива:</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da52084380882902216" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084380882902216-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084380882902216-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084380882902216-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084380882902216-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084380882902216-5">5</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084380882902216-1"><span class="crayon-c"># создадим массив и передадим его в функцию np.random.shuffle()</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084380882902216-2"><span class="crayon-v">arr</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">np</span><span class="crayon-sy">.</span><span class="crayon-k ">array</span><span class="crayon-sy">(</span><span class="crayon-sy">[</span><span class="crayon-cn">1</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">4</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">5</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084380882902216-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084380882902216-4"><span class="crayon-c"># сама функция выдала None, исходный массив при этом изменился</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084380882902216-5"><span class="crayon-k ">print</span><span class="crayon-sy">(</span><span class="crayon-v">np</span><span class="crayon-sy">.</span><span class="crayon-k ">random</span><span class="crayon-sy">.</span><span class="crayon-e">shuffle</span><span class="crayon-sy">(</span><span class="crayon-v">arr</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">arr</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0007 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da5208438f675614159" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da5208438f675614159-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da5208438f675614159-1">None [3 2 1 5 4]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da52084391899485190" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084391899485190-6">6</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084391899485190-1"><span class="crayon-c"># еще раз создадим массив</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084391899485190-2"><span class="crayon-v">arr</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">np</span><span class="crayon-sy">.</span><span class="crayon-k ">array</span><span class="crayon-sy">(</span><span class="crayon-sy">[</span><span class="crayon-cn">1</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">4</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">5</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084391899485190-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084391899485190-4"><span class="crayon-c"># передав его в np.random.permutation(),</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084391899485190-5"><span class="crayon-c"># мы получим перемешанную копию и исходный массив без изменений</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084391899485190-6"><span class="crayon-v">np</span><span class="crayon-sy">.</span><span class="crayon-k ">random</span><span class="crayon-sy">.</span><span class="crayon-e">permutation</span><span class="crayon-sy">(</span><span class="crayon-v">arr</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">arr</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0005 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da52084394655279411" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084394655279411-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084394655279411-1">(array([2, 4, 3, 1, 5]), array([1, 2, 3, 4, 5]))</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>Перемешивание массива можно использовать, если, например, нужно внести элемент случайности в работу с данными. Давайте создадим аналог функции <strong>train_test_split()</strong> библиотеки sklearn, которой мы пользовались для <a href="https://www.dmitrymakarov.ru/intro/train-test-13/">разделения выборки</a> на обучающую и тестовую части.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da52084395031293647" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-15">15</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-16">16</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-17">17</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-18">18</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-19">19</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-20">20</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-21">21</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-22">22</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-23">23</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-24">24</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-25">25</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-26">26</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-27">27</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-28">28</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-29">29</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-30">30</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-31">31</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-32">32</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-33">33</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-34">34</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-35">35</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-36">36</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-37">37</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-38">38</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-39">39</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-40">40</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-41">41</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-42">42</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-43">43</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-44">44</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-45">45</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084395031293647-46">46</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size: … [Строка слишком длинная. Вы можете скачать файл] </tr> </table> </div> </div> <!-- [Format Time: 0.0033 seconds] --> </div> <p>Подгрузим данные о пациентах с диабетом из модуля datasets библиотеки sklearn. Как это делается, мы <a href="https://www.dmitrymakarov.ru/intro/regression-14/#1-modul-datasets-biblioteki-scikit-learn">подробно разобрали</a> на занятии по линейной регрессии на вводном курсе.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da52084398223644395" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da52084398223644395-15">15</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-1"><span class="crayon-r">import</span><span class="crayon-h"> </span><span class="crayon-e">pandas </span><span class="crayon-st">as</span><span class="crayon-h"> </span><span class="crayon-i">pd</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-2"> </div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-3"><span class="crayon-c"># импортируем данные о пациентах с диабетом</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-4"><span class="crayon-st">from</span><span class="crayon-h"> </span><span class="crayon-v">sklearn</span><span class="crayon-sy">.</span><span class="crayon-e">datasets </span><span class="crayon-r">import</span><span class="crayon-h"> </span><span class="crayon-v">load</span><span class="crayon-sy">_</span>diabetes</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-5"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-6"><span class="crayon-c"># помещаем их в переменную data</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-7"><span class="crayon-v">data</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-e">load_diabetes</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-8"><span class="crayon-h"> </span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-9"><span class="crayon-c"># создаем два датафрейма</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-10"><span class="crayon-v">X</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">pd</span><span class="crayon-sy">.</span><span class="crayon-e">DataFrame</span><span class="crayon-sy">(</span><span class="crayon-v">data</span><span class="crayon-sy">.</span><span class="crayon-v">data</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">columns</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">data</span><span class="crayon-sy">.</span><span class="crayon-v">feature_names</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-11"><span class="crayon-v">y</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">pd</span><span class="crayon-sy">.</span><span class="crayon-e">DataFrame</span><span class="crayon-sy">(</span><span class="crayon-v">data</span><span class="crayon-sy">.</span><span class="crayon-v">target</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">columns</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-sy">[</span><span class="crayon-s">'target'</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-12"><span class="crayon-h"> </span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-13"><span class="crayon-c"># для проверки работы функции можно также создать массивы Numpy</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da52084398223644395-14"><span class="crayon-c"># X = data.data</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da52084398223644395-15"><span class="crayon-c"># y = data.target</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0010 seconds] --> </div> <p>Вызовем созданную функцию и проверим ее работу.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da5208439b678219698" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da5208439b678219698-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da5208439b678219698-1"><span class="crayon-v">X_train</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">X_test</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">y_train</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">y_test</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-e">split_data</span><span class="crayon-sy">(</span><span class="crayon-v">X</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">y</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">random_state</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">42</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0004 seconds] --> </div> <p>Теперь проверим, правильно ли записались данные в созданные выше переменные и расположены ли в них строки в случайном порядке.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da5208439c316572168" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da5208439c316572168-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da5208439c316572168-1"><span class="crayon-v">X_train</span><span class="crayon-sy">.</span><span class="crayon-e">head</span><span class="crayon-sy">(</span><span class="crayon-cn">3</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0002 seconds] --> </div> <figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="172" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-1024x172.jpg" alt="функция для разделения выборки на обучающую и тестовую части" class="wp-image-11792" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-1024x172.jpg 1024w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-300x50.jpg 300w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-768x129.jpg 768w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-1536x258.jpg 1536w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-2048x344.jpg 2048w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-1200x202.jpg 1200w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/X_train_load_diabetes-600x101.jpg 600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da5208439e829413166" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da5208439e829413166-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da5208439e829413166-1"><span class="crayon-v">y_train</span><span class="crayon-sy">.</span><span class="crayon-e">head</span><span class="crayon-sy">(</span><span class="crayon-cn">3</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0002 seconds] --> </div> <figure class="wp-block-image size-full is-resized"><img decoding="async" width="309" height="390" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/y_train_load_diabetes.jpg" alt="функция для разделения выборки на обучающую и тестовую части 2" class="wp-image-11793" style="width:123px;height:155px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/y_train_load_diabetes.jpg 309w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/y_train_load_diabetes-238x300.jpg 238w" sizes="(max-width: 309px) 100vw, 309px" /></figure> <p>Похоже, что все работает как надо.</p> <h3 class="wp-block-heading" id="2-modul-itertools">Модуль itertools</h3> <p>Рассмотренные выше функции не позволяют вывести все возможные комбинации элементов. Для этого есть модуль <strong>itertools</strong>.</p> <h4 class="wp-block-heading" id="3-perestanovki">Перестановки</h4> <p>Напомню, что перестановка (permutation) в комбинаторике позволяет узнать, сколькими способами можно разместить элементы множества в определенном порядке.</p> <h5 class="wp-block-heading" id="4-perestanovki-bez-zameny">Перестановки без замены</h5> <p>Вначале возьмем те случаи, когда один элемент может повторяться только один раз. В этом случае мы говорим о <strong>перестановках без замены</strong> (permutations without replacement). Они бывают двух видов: без повторений и с повторениями.</p> <h6 class="wp-block-heading" id="5-perestanovki-bez-povtoreniy">Перестановки без повторений</h6> <p>Рассмотрим простой пример. У нас есть три элемента A, B и C. Сколькими способами можно переставить эти объекты так, чтобы порядок элементов не повторялся?</p> <p class="has-background" style="background-color:#ffe8c4">Так как элементы в исходном множестве не повторяются, то такая перестановка называется <strong>перестановкой без повторения</strong> (permutation without repetition).</p> <p>Очевидно, на первое место мы можем поставить любой из трех элементов, на второе — только один из оставшихся двух, на третьем месте окажется единственный не выбывший элемент. Получается $ 3 \times 2 \times 1 = 6 $. Такой расчет не что иное, как факториал числа три, $3!$.</p> <p>$$ P(n) = n! \rightarrow P(3) = 3! = 6 $$</p> <p>На Питоне мы можем вычислить факториал нужного нам числа через <strong>функцию factorial()</strong> модуля math.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843a0886878035" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a0886878035-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a0886878035-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a0886878035-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a0886878035-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a0886878035-5">5</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a0886878035-1"><span class="crayon-c"># импортируем модуль math</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a0886878035-2"><span class="crayon-r">import</span><span class="crayon-h"> </span><span class="crayon-k ">math</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a0886878035-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a0886878035-4"><span class="crayon-c"># передадим функции factorial() число 3</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a0886878035-5"><span class="crayon-k ">math</span><span class="crayon-sy">.</span><span class="crayon-e">factorial</span><span class="crayon-sy">(</span><span class="crayon-cn">3</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0002 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843a6174061883" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a6174061883-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a6174061883-1">6</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>Кроме того, мы можем воспользоваться <strong>функцией permutations()</strong> модуля itertools. В этом случае мы можем вывести все возможные перестановки элементов множества.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843a8997875127" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843a8997875127-12">12</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-1"><span class="crayon-c"># импортируем модуль itertools</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-2"><span class="crayon-r">import</span><span class="crayon-h"> </span><span class="crayon-k ">itertools</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-4"><span class="crayon-c"># создадим строку из букв A, B, C</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-5"><span class="crayon-v">x</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'ABC'</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-6"><span class="crayon-c"># помимо строки можно использовать и список</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-7"><span class="crayon-c"># x = ['A', 'B', 'C']</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-8"><span class="crayon-h"> </span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-9"><span class="crayon-c"># и передадим ее в функцию permutations()</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-10"><span class="crayon-c"># так как функция возвращает объект itertools.permutations,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843a8997875127-11"><span class="crayon-c"># для вывода результата используем функцию list()</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843a8997875127-12"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0005 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843aa956037243" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843aa956037243-6">6</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843aa956037243-1">[('A', 'B', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843aa956037243-2"> ('A', 'C', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843aa956037243-3"> ('B', 'A', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843aa956037243-4"> ('B', 'C', 'A'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843aa956037243-5"> ('C', 'A', 'B'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843aa956037243-6"> ('C', 'B', 'A')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Если все же нас интересуют не сами перестановки, а их количество, можно воспользоваться функцией <strong>len()</strong>.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843ac808834441" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843ac808834441-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843ac808834441-1"><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0002 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843ae532871041" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843ae532871041-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843ae532871041-1">6</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <h6 class="wp-block-heading" id="6-razmeshcheniya">Размещения</h6> <p>Приведем чуть более сложный пример. Предположим, в соревнованиях участвуют шесть команд ($n = 6$), и нам нужно узнать, сколькими способами эти команды могут занять первое, второе и третье призовые места. Просто вычислить факториал мы уже не можем, нам нужно уменьшить общее число вариантов на то количество перестановок, которое не будет реализовано, потому что мест всего три ($r = 3$).</p> <p>Такой тип перестановок называют <strong>размещением</strong> (partial permulation). Приведем формулу.</p> <p>$$ P(n, r) = \frac{n!}{(n-r)!} \rightarrow P(6, 3) = \frac{6!}{(6-3)!} = 120 $$</p> <p>На Питоне мы можем применить ту же функцию <strong>permutations()</strong>, передав ей через параметр $r$ размер выборки (количество мест).</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843b0995341029" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b0995341029-6">6</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b0995341029-1"><span class="crayon-c"># теперь элементов исходного множества шесть</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b0995341029-2"><span class="crayon-v">x</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'ABCDEF'</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b0995341029-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b0995341029-4"><span class="crayon-c"># чтобы узнать, сколькими способами их можно разместить на трех местах,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b0995341029-5"><span class="crayon-c"># передадим параметр r = 3 и выведем первые пять элементов</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b0995341029-6"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">r</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">[</span><span class="crayon-o">:</span><span class="crayon-cn">5</span><span class="crayon-sy">]</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0005 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843b2777648645" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b2777648645-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b2777648645-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b2777648645-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b2777648645-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b2777648645-5">5</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b2777648645-1">[('A', 'B', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b2777648645-2"> ('A', 'B', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b2777648645-3"> ('A', 'B', 'E'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b2777648645-4"> ('A', 'B', 'F'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b2777648645-5"> ('A', 'C', 'B')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Посмотрим на общее количество перестановок.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843b4319982951" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b4319982951-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b4319982951-2">2</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b4319982951-1"><span class="crayon-c"># как и в предыдущем случае, воспользуемся функцией len()</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843b4319982951-2"><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">r</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0004 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843b6032171087" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b6032171087-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843b6032171087-1">120</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>Дополнительно замечу, что в случае если выборка $r$ также велика, как и множество $n$ (первый пример), то формулу размещения можно записать как</p> <p>$$ P(n, n) = \frac{n!}{(n-n)!} $$</p> <p>В знаменателе получается $0!$, и для того чтобы избежать деления на ноль, принято считать, что факториал нуля равен единице, $0! = 1.$</p> <h6 class="wp-block-heading" id="7-perestanovki-s-povtoreniyami">Перестановки с повторениями</h6> <p>Давайте дополнительно усложним задачу и рассчитаем количество перестановок букв в слове «молоко». В данном случае мы не можем воспользоваться факториалом, потому что буква «о» повторяется трижды, и соответственно мы можем разместить ее $3!$ способами. Как следствие, для получения правильного ответа нам нужно разделить количество перестановок на шесть, $3! = 6.$</p> <p class="has-background" style="background-color:#ffe8c4">В таком случае мы говорим про <strong>перестановки с повторениями</strong> (permutations with repetitions).</p> <p>$$ \frac{6!}{3!} = 120 $$</p> <p>В целом, если какой-то из элементов повторяется, то общее число перестановок нужно разделить на произведение факториалов повторяющихся элементов (правильнее сказать на произведение факториалов повторяемости каждого элемента, однако факториал неповторяющихся элементов равен $1! = 1$, поэтому ими можно пренебречь).</p> <p>$$ \frac{P(n, r)}{n_1! \cdot n_2! \cdot … \cdot n_r!}, \text{где } n_1! + n_2! + … + n_r! = n $$</p> <p>Для расчета перестановок с повторениями напишем <a href="https://www.dmitrymakarov.ru/python/functions-06/#3-sobstvennye-funktsii-v-pitone">собственную функцию</a>.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843b8145968968" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-15">15</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-16">16</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-17">17</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-18">18</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-19">19</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-20">20</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-21">21</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-22">22</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-23">23</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-24">24</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-25">25</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-26">26</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-27">27</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-28">28</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-29">29</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-30">30</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-31">31</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-32">32</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-33">33</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-34">34</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-35">35</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-36">36</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-37">37</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-38">38</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843b8145968968-39">39</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size: … [Строка слишком длинная. Вы можете скачать файл] </tr> </table> </div> </div> <!-- [Format Time: 0.0024 seconds] --> </div> <p>Рассчитаем количество перестановок с повторениями букв в слове «молоко».</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843bb693168603" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843bb693168603-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843bb693168603-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843bb693168603-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843bb693168603-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843bb693168603-5">5</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843bb693168603-1"><span class="crayon-c"># создадим строку со словом "молоко"</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843bb693168603-2"><span class="crayon-v">x</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'МОЛОКО'</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843bb693168603-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843bb693168603-4"><span class="crayon-c"># вызовем функцию</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843bb693168603-5"><span class="crayon-e">permutations_w_repetition</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843bd212244916" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843bd212244916-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843bd212244916-1">120</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <h5 class="wp-block-heading" id="8-perestanovki-s-zamenoy">Перестановки с заменой</h5> <p><strong>Перестановки с заменой</strong> (permutations with replacement), когда элементы могут использоваться более одного раза, есть не что иное, как прямое или декартово произведение множества само на себя.</p> <p>Вначале рассмотрим суть декартова произведения.</p> <p class="has-background" style="background-color:#ffe8c4"><strong>Декартово произведение</strong> (Cartesian product) двух множеств предполагает, что мы создаем все возможные упорядоченные пары исходных множеств.</p> <p>В частности, если у нас есть одно множество $A$ с элементами $\{ 1, 2, 3 \}$ и множество $B$ с элементами $ \{ x, y \} $, то их произведением $ A \times B $ будут все возможные упорядоченные комбинации этих элементов.</p> <figure class="wp-block-image size-full"><img decoding="async" width="768" height="192" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-product.png" alt="декартово произведение" class="wp-image-11881" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-product.png 768w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-product-300x75.png 300w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-product-600x150.png 600w" sizes="(max-width: 768px) 100vw, 768px" /></figure> <p>При умножении множества само на себя один раз мы говорим про <strong>квадрат Декарта</strong> (Cartesian square). В частности, если умножить множество действительных чисел $ \mathbb {R} $ само на себя ($ \mathbb{R} \times \mathbb{R} $), то получится <strong>координатная плоскость или декартова система координат</strong> (Cartesian plane).</p> <figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="894" height="894" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane.png" alt="координатная плоскость или декартова система координат" class="wp-image-11878" style="width:394px;height:394px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane.png 894w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane-300x300.png 300w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane-150x150.png 150w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane-768x768.png 768w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/cartesian-plane-600x600.png 600w" sizes="(max-width: 894px) 100vw, 894px" /></figure> <p class="has-background" style="background-color:#ffe8c4">Замечу, что множество можно умножить само на себя много раз, в этом случае говорят про <strong>декартову степень</strong> (Cartesian power).</p> <p>При этом оказывается, что перестановка с заменой и есть декартова степень исходного множества.</p> <p>Например, представим, что в кафе есть два сорта мороженого, ванильное и клубничное, и мы можем заказать любые два шарика. В частности, шарик ванильного или шарик клубничного. Тогда возможные варианты заказа можно представить следующим образом.</p> <figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="756" height="180" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations_w_replacement-1.png" alt="возможные варианты заказа" class="wp-image-11887" style="width:592px;height:141px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations_w_replacement-1.png 756w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations_w_replacement-1-300x71.png 300w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations_w_replacement-1-600x143.png 600w" sizes="(max-width: 756px) 100vw, 756px" /></figure> <p>При этом так как это перестановки и порядок имеет значение, <em>(клубника, ваниль)</em> и <em>(ваниль, клубника)</em> это разные заказы.</p> <p>В модуле itertools для такой операции есть <strong>функция product()</strong>.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843bf420983479" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843bf420983479-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843bf420983479-2">2</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843bf420983479-1"><span class="crayon-c"># посмотрим, сколькими способами можно выбрать два сорта мороженого</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843bf420983479-2"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">product</span><span class="crayon-sy">(</span><span class="crayon-sy">[</span><span class="crayon-s">'Ваниль'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-s">'Клубника'</span><span class="crayon-sy">]</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">repeat</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0002 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843c3721545219" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c3721545219-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c3721545219-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c3721545219-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c3721545219-4">4</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c3721545219-1">[('Ваниль', 'Ваниль'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c3721545219-2"> ('Ваниль', 'Клубника'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c3721545219-3"> ('Клубника', 'Ваниль'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c3721545219-4"> ('Клубника', 'Клубника')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>В целом формула прямого произведения выглядит как $n^r$. Например, если во множестве четыре элемента, то поставить два элемента из этих четырех можно шестнадцатью способами ($4^2=16$).</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843c5840147758" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c5840147758-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c5840147758-2">2</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c5840147758-1"><span class="crayon-c"># посмотрим на способы переставить с заменой два элемента из четырех</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c5840147758-2"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">product</span><span class="crayon-sy">(</span><span class="crayon-s">'ABCD'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">repeat</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843c7162776255" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-15">15</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843c7162776255-16">16</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-1">[('A', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-2"> ('A', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-3"> ('A', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-4"> ('A', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-5"> ('B', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-6"> ('B', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-7"> ('B', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-8"> ('B', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-9"> ('C', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-10"> ('C', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-11"> ('C', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-12"> ('C', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-13"> ('D', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-14"> ('D', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c7162776255-15"> ('D', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843c7162776255-16"> ('D', 'D')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Убедимся, что таких способов 16.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843c9236444232" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843c9236444232-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843c9236444232-1"><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">product</span><span class="crayon-sy">(</span><span class="crayon-s">'ABCD'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">repeat</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843cb006492852" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cb006492852-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cb006492852-1">16</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>В данном случае мы умножаем множество само на себя два раза.</p> <figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="593" height="282" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/ABCD-cartesian-product.png" alt="умножение множества само на себя два раза" class="wp-image-11891" style="width:492px;height:234px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/ABCD-cartesian-product.png 593w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/ABCD-cartesian-product-300x143.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></figure> <p>Замечу, что если умножать множество на себя три раза, то графически понадобился бы куб. Резюмируем все изученные способы перестановок на схеме ниже.</p> <figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="942" height="497" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations.png" alt="способы перестановок" class="wp-image-11892" style="width:707px;height:373px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations.png 942w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations-300x158.png 300w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations-768x405.png 768w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/permutations-600x317.png 600w" sizes="(max-width: 942px) 100vw, 942px" /></figure> <h4 class="wp-block-heading" id="9-sochetaniya">Сочетания</h4> <h5 class="wp-block-heading" id="10-sochetaniya-bez-povtoreniy">Сочетания без повторений</h5> <p>В отличие от перестановок при расчете сочетаний (combinations) порядок значения не имеет. Например, представьте, что в парном теннисе из пяти кандидатов нам нужно собрать команду из двух человек.</p> <figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="445" height="296" src="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/combinations-example.png" alt="сочетания" class="wp-image-11895" style="width:370px;height:246px" srcset="https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/combinations-example.png 445w, https://www.dmitrymakarov.ru/wp-content/uploads/2022/04/combinations-example-300x200.png 300w" sizes="(max-width: 445px) 100vw, 445px" /></figure> <p>По сравнению с похожей задачей с призовыми местами, нам не важно кто будет первым, а кто вторым. Если считать через перестановки, то получится так</p> <p>$$ P(5, 2) = \frac{5!}{(5-2)!} = 20 $$</p> <p>Для наглядности посмотрим на эти комбинации с помощью Питона.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843cd348411747" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cd348411747-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cd348411747-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cd348411747-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cd348411747-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cd348411747-5">5</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cd348411747-1"><span class="crayon-c"># возьмем пять элементов</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cd348411747-2"><span class="crayon-v">x</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'ABCDE'</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cd348411747-3"><span class="crayon-h"> </span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cd348411747-4"><span class="crayon-c"># и найдем способ переставить два элемента из этих пяти</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cd348411747-5"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">r</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0004 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843cf718334619" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-15">15</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-16">16</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-17">17</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-18">18</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-19">19</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843cf718334619-20">20</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-1">[('A', 'B'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-2"> ('A', 'C'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-3"> ('A', 'D'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-4"> ('A', 'E'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-5"> ('B', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-6"> ('B', 'C'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-7"> ('B', 'D'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-8"> ('B', 'E'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-9"> ('C', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-10"> ('C', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-11"> ('C', 'D'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-12"> ('C', 'E'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-13"> ('D', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-14"> ('D', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-15"> ('D', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-16"> ('D', 'E'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-17"> ('E', 'A'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-18"> ('E', 'B'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843cf718334619-19"> ('E', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843cf718334619-20"> ('E', 'D')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Однако обратите внимание, некоторые комбинации, если не учитывать порядок, повторяются (например, $AB$ и $BA$). Поэтому сочетаний (то есть перестановок без учета порядка) меньше. Причем меньше на количество перестановок каждого типа, то есть $r!$. В данном случае перестановок каждого типа два, то есть $2! = 2$.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843d1221173915" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d1221173915-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d1221173915-1"><span class="crayon-k ">int</span><span class="crayon-sy">(</span><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">permutations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">r</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-o">/</span><span class="crayon-k ">math</span><span class="crayon-sy">.</span><span class="crayon-e">factorial</span><span class="crayon-sy">(</span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0005 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843d3450406877" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d3450406877-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d3450406877-1">10</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Выведем формулу.</p> <p>$$ C(n, r) = \frac{n!}{(n-r)! r!} \rightarrow C(5, 2) = \frac{5!}{(5-2)! 2!} = 10 $$</p> <p>В Питоне для сочетаний есть удобная <strong>функция combinations()</strong>.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843d5147622357" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d5147622357-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d5147622357-1"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">combinations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0004 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843d7488341807" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843d7488341807-10">10</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d7488341807-1">[('A', 'B'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843d7488341807-2"> ('A', 'C'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d7488341807-3"> ('A', 'D'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843d7488341807-4"> ('A', 'E'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d7488341807-5"> ('B', 'C'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843d7488341807-6"> ('B', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d7488341807-7"> ('B', 'E'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843d7488341807-8"> ('C', 'D'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d7488341807-9"> ('C', 'E'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843d7488341807-10"> ('D', 'E')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843d9234572731" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843d9234572731-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843d9234572731-1"><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">combinations</span><span class="crayon-sy">(</span><span class="crayon-v">x</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843db960077290" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843db960077290-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843db960077290-1">10</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <h5 class="wp-block-heading" id="11-sochetaniya-s-povtoreniyami">Сочетания с повторениями</h5> <p>Если допустить повторение элементов, сочетаний станет больше.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843dd319200082" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843dd319200082-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843dd319200082-1"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">combinations_with_replacement</span><span class="crayon-sy">(</span><span class="crayon-s">'AB'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843df817015775" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843df817015775-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843df817015775-1">[('A', 'A'), ('A', 'B'), ('B', 'B')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>В целом количество сочетаний с повторениями (combinations with repetitions или иногда with replacement) вычисляется по следующей формуле.</p> <p>$$ C(n, r)_{rep} = \frac{(n+r-1)!}{(n-r)! r!} $$</p> <p>В нашем случае,</p> <p>$$ C(2, 2)_{rep} = \frac{(2+2-1)!}{(2-2)! 2!} = \frac{3!}{2!} = 3 $$</p> <h5 class="wp-block-heading" id="12-binomialnye-koeffitsienty">Биномиальные коэффициенты</h5> <p>Давайте вернемся к биномиальному распределению и его функции вероятности. Напомню, что во <a href="https://www.dmitrymakarov.ru/python/random-11-02/#13-primer-s-raznoy-veroyatnostyu">втором примере</a> мы три раза подбрасывали монету, $n = 3$, вероятность выпадения орла составляла, $p = 0{,}7$, а найти мы должны были выпадение двух орлов, $k = 2$.</p> <p>$$ P(X = k) = C(n, k) p^k (1-p)^{n-k} $$</p> <p>$$ P(X = 2) = C(3, 2) \times 0{,}7^2 \times (1-0{,}7)^{3-2} = 3 \times 0{,}7^2 \times 0{,}3^1 = 0{,}441 $$</p> <p>Первая часть этой формулы и есть количество сочетаний при выпадении двух орлов в трех бросках. Для того чтобы вывести дерево вероятностей, мы можем воспользоваться декартовой степенью множества {решка, орел} или {H, T}.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843e1994536969" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e1994536969-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e1994536969-2">2</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e1994536969-1"><span class="crayon-c"># трижды умножим множество {H, T} само на себя</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e1994536969-2"><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">product</span><span class="crayon-sy">(</span><span class="crayon-s">'HT'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">repeat</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0004 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843e4450078972" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e4450078972-8">8</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e4450078972-1">[('H', 'H', 'H'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e4450078972-2"> ('H', 'H', 'T'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e4450078972-3"> ('H', 'T', 'H'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e4450078972-4"> ('H', 'T', 'T'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e4450078972-5"> ('T', 'H', 'H'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e4450078972-6"> ('T', 'H', 'T'),</div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e4450078972-7"> ('T', 'T', 'H'),</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e4450078972-8"> ('T', 'T', 'T')]</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Количество же сочетаний рассчитаем через функцию <strong>combinations()</strong>.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843e6413587060" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e6413587060-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843e6413587060-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e6413587060-3">3</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e6413587060-1"><span class="crayon-c"># посмотрим, в скольких комбинациях выпадет две решки при трех бросках</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843e6413587060-2"><span class="crayon-v">comb</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-k ">len</span><span class="crayon-sy">(</span><span class="crayon-k ">list</span><span class="crayon-sy">(</span><span class="crayon-k ">itertools</span><span class="crayon-sy">.</span><span class="crayon-e">combinations</span><span class="crayon-sy">(</span><span class="crayon-s">'ABC'</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e6413587060-3"><span class="crayon-v">comb</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0003 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843e8390040628" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843e8390040628-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843e8390040628-1">3</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <p>Полный расчет на Питоне будет выглядеть так.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843ea138103533" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843ea138103533-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843ea138103533-1"><span class="crayon-k ">round</span><span class="crayon-sy">(</span><span class="crayon-v">comb</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-cn">0.7</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-o">*</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-h"> </span><span class="crayon-cn">0.7</span><span class="crayon-sy">)</span><span class="crayon-o">*</span><span class="crayon-o">*</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-cn">3</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0006 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843ec133683256" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843ec133683256-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843ec133683256-1">0.441</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0001 seconds] --> </div> <p>Конечно же этот результат гораздо проще получить через библиотеку scipy.</p> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843ee632706550" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843ee632706550-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-672da520843ee632706550-2">2</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843ee632706550-1"><span class="crayon-st">from</span><span class="crayon-h"> </span><span class="crayon-v">scipy</span><span class="crayon-sy">.</span><span class="crayon-e">stats </span><span class="crayon-r">import</span><span class="crayon-h"> </span><span class="crayon-e">binom</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-672da520843ee632706550-2"><span class="crayon-v">binom</span><span class="crayon-sy">.</span><span class="crayon-e">pmf</span><span class="crayon-sy">(</span><span class="crayon-v">k</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">2</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">n</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">p</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">0.7</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-k ">round</span><span class="crayon-sy">(</span><span class="crayon-cn">3</span><span class="crayon-sy">)</span></div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0005 seconds] --> </div> <div class="wp-block-urvanov-syntax-highlighter-code-block"><!-- Urvanov Syntax Highlighter v2.8.37 --> <div id="urvanov-syntax-highlighter-672da520843f0088337056" class="urvanov-syntax-highlighter-syntax crayon-theme-familiar-my-copy urvanov-syntax-highlighter-font-consolas urvanov-syntax-highlighter-os-pc print-yes notranslate" data-settings=" minimize scroll-always" style=" margin-top: 15px; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; font-size: 16px !important; line-height: 22px !important;"> <div class="urvanov-syntax-highlighter-plain-wrap"></div> <div class="urvanov-syntax-highlighter-main" style=""> <table class="crayon-table"> <tr class="urvanov-syntax-highlighter-row"> <td class="crayon-nums " data-settings="show"> <div class="urvanov-syntax-highlighter-nums-content" style="font-size: 16px !important; line-height: 22px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-672da520843f0088337056-1">1</div></div> </td> <td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 16px !important; line-height: 22px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-672da520843f0088337056-1">0.441</div></div></td> </tr> </table> </div> </div> <!-- [Format Time: 0.0000 seconds] --> </div> <h2 class="wp-block-heading" id="13-podvedem-itog">Подведем итог</h2> <p>По большому счету мы затронули три важные темы:</p> <ol class="wp-block-list"> <li>Моделирование и исследование <a href="https://www.dmitrymakarov.ru/python/random-11/">случайных процессов</a> с помощью модуля random;</li> <li><a href="https://www.dmitrymakarov.ru/python/random-11-02/">Дискретные</a> и <a href="https://www.dmitrymakarov.ru/python/random-11-03/">непрерывные</a> распределения случайных величин; и</li> <li>Комбинаторику на Питоне.</li> </ol> <p>Пройденный материал поможет как в дальнейшем изучении теории, так и в построении более качественных моделей машинного обучения.</p> <h3 class="wp-block-heading" id="14-voprosy-dlya-zakrepleniya">Вопросы для закрепления</h3> <p class="has-black-color has-text-color has-background" style="background-color:#ffe8c4">Вопрос. Чем теоретическая вероятность отличается от эмпирической?</p> <div class="wp-block-ub-content-toggle" id="ub-content-toggle-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45" data-mobilecollapse="true" data-desktopcollapse="true"> <div class="wp-block-ub-content-toggle-accordion" id="ub-content-toggle-panel-block-9b78d45f-e05e-4c47-9d9b-b45950b79e21"> <div class="wp-block-ub-content-toggle-accordion-title-wrap"" aria-controls="ub-content-toggle-panel-0-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45" tabindex="0"> <p class="wp-block-ub-content-toggle-accordion-title ub-content-toggle-title-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45">Посмотреть правильный ответ</p><div class="wp-block-ub-content-toggle-accordion-toggle-wrap left"><span class="wp-block-ub-content-toggle-accordion-state-indicator wp-block-ub-math-plus"></span> </div></div><div role="region" aria-expanded="false" class="wp-block-ub-content-toggle-accordion-content-wrap ub-hide" id="ub-content-toggle-panel-0-ece6dba9-b0ac-438f-9a12-a87d5dcc1d45"> <p>Ответ: <strong>теоретическая</strong> вероятность — это соотношение благоприятствующих событию исходов ко всем возможным исходам испытания, эту вероятность мы можем рассчитать; <strong>эмпирическая</strong> вероятность — соотношение наступления события к общему числу испытаний, которое мы наблюдаем в результате эксперимента</p> </div></div> </div> <p class="has-black-color has-text-color has-background" style="background-color:#ffe8c4">Вопрос. Чем отличается функция вероятности (probability mass function, pmf) от плотности вероятности (probability density function, pdf)?</p> <div class="wp-block-ub-content-toggle" id="ub-content-toggle-13071540-1081-4fc9-bf6b-4322d84042e1" data-mobilecollapse="true" data-desktopcollapse="true"> <div class="wp-block-ub-content-toggle-accordion" id="ub-content-toggle-panel-block-90d807cb-5c48-40da-8b35-effa7476aee6"> <div class="wp-block-ub-content-toggle-accordion-title-wrap"" aria-controls="ub-content-toggle-panel-0-13071540-1081-4fc9-bf6b-4322d84042e1" tabindex="0"> <p class="wp-block-ub-content-toggle-accordion-title ub-content-toggle-title-13071540-1081-4fc9-bf6b-4322d84042e1">Посмотреть правильный ответ</p><div class="wp-block-ub-content-toggle-accordion-toggle-wrap left"><span class="wp-block-ub-content-toggle-accordion-state-indicator wp-block-ub-math-plus"></span> </div></div><div role="region" aria-expanded="false" class="wp-block-ub-content-toggle-accordion-content-wrap ub-hide" id="ub-content-toggle-panel-0-13071540-1081-4fc9-bf6b-4322d84042e1"> <p>Ответ: <strong>функция вероятности</strong> задает распределение дискретной случайной величины (discrete random variable), а <strong>плотность вероятности</strong> описывает распределение непрерывной величины (discrete random variable)</p> </div></div> </div> <p class="has-black-color has-text-color has-background" style="background-color:#ffe8c4">Вопрос. Чем сочетания отличаются от перестановок?</p> <div class="wp-block-ub-content-toggle" id="ub-content-toggle-2dbacd7f-0456-4e60-b350-9610e52c1ef0" data-mobilecollapse="true" data-desktopcollapse="true"> <div class="wp-block-ub-content-toggle-accordion" id="ub-content-toggle-panel-block-bff49097-0323-42e4-afe2-6de3dac8113f"> <div class="wp-block-ub-content-toggle-accordion-title-wrap"" aria-controls="ub-content-toggle-panel-0-2dbacd7f-0456-4e60-b350-9610e52c1ef0" tabindex="0"> <p class="wp-block-ub-content-toggle-accordion-title ub-content-toggle-title-2dbacd7f-0456-4e60-b350-9610e52c1ef0">Посмотреть правильный ответ</p><div class="wp-block-ub-content-toggle-accordion-toggle-wrap left"><span class="wp-block-ub-content-toggle-accordion-state-indicator wp-block-ub-math-plus"></span> </div></div><div role="region" aria-expanded="false" class="wp-block-ub-content-toggle-accordion-content-wrap ub-hide" id="ub-content-toggle-panel-0-2dbacd7f-0456-4e60-b350-9610e52c1ef0"> <p>Ответ: при расчете количества перестановок мы учитываем порядок, в котором располагаются элементы, при расчете количества сочетаний порядок не важен</p> </div></div> </div> <p>На следующем занятии мы немного отдохнем от математики и рассмотрим <a href="https://www.dmitrymakarov.ru/python/oop-12/">объектно-ориентированный подход</a> к программированию.</p> <div id="ub_divider_78bd2283-65a8-4db5-b3de-4fc3517da5c8" class="wp-block-ub-divider ub-divider-orientation-horizontal"><hr class="ub_divider" ></hr></div> <h3 class="wp-block-heading" id="15-otvety-na-voprosy">Ответы на вопросы</h3> <p><strong>Вопрос</strong>. Подскажите, а зачем повторно импортировать Numpy, itertools и math перед объявлением собственной функции permutations_w_repetition()? Ведь вы уже импортировали их перед этим.</p> <p><strong>Ответ</strong>. Я повторно импортировал необходимые библиотеки на случай использования функции в других проектах. Предположим, вы захотите использовать эту функцию в своей работе и поместите ее в отдельный файл. Для того чтобы код сработал, вам сначала понадобится импортировать эти три библиотеки.</p> <p class="has-background" style="background-color:#ffe8c4">По-английски они называюся <strong>dependency</strong> или <strong>dependencies</strong>, потому что от них зависит выполнение основной программы.</p> <p>Дополнительно замечу, что Руководство по написанию кода на Питоне (Python Enhancement Proposal или PEP 8) <a href="https://peps.python.org/pep-0008/#imports" target="_blank" rel="noreferrer noopener">рекомендует</a>⧉ делать импорт необходимых библиотек и модулей «после комментариев к модулю и строк документации, и перед объявлением констант», а не внутри функций или классов. Подробнее об этом мы поговорим через одно занятие.</p> <div id="ub_divider_dd9713ba-314a-4038-a147-0ed557e1b32e" class="wp-block-ub-divider ub-divider-orientation-horizontal"><hr class="ub_divider" ></hr></div> <p><strong>Вопрос</strong>. Скажите, а чем матожидание отличается от среднего значения?</p> <p><strong>Ответ</strong>. Матожидание (expected value) — это то среднее значение, которое мы предполагаем/ожидаем получить с учетом известного нам типа распределения. Например, зная, что случайная величина следует биномиальному распределению с параметрами $n = 3$ и $p = 0{,}7$, мы ожидаем наблюдать среднее значение $np = 3 \times 0{,}7 = 2{,}1$. В частности, с помощью <strong>функции scipy.stats.binom.stats()</strong> мы рассчитываем именно матожидание распределения.</p> <p>Собрав же фактические данные (мы для этого использовали модуль random и функцию <strong>np.random.binomial()</strong>), мы можем посмотреть насколько среднее (mean value) этих данных согласуется с математическим ожиданием. При достаточно большом количестве экспериментов среднее должно стремиться к математическому ожиданию.</p> <p>Привел пример в <a href="https://colab.research.google.com/drive/1VX5VlmmBXhFqdY4uRxjE1a3uwAqNyNTh#scrollTo=8pV7hhuLT2Hd" target="_blank" rel="noreferrer noopener">конце блокнота</a>⧉.</p> </div> <!-- .content --> </div> <!-- .post --> <footer class="site-footer section-inner"> <!--<p class="copyright">© 2024 <a href="https://www.dmitrymakarov.ru" class="site-name">Машинное обучение</a></p>--> </footer> <!-- footer --> </main> <script type="text/javascript" src="//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js?ver=6.6.2" id="mathjax-js"></script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-content/plugins/ultimate-blocks/src/blocks/content-toggle/front.build.js?ver=3.2.2" id="ultimate_blocks-content-toggle-front-script-js"></script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-content/plugins/ultimate-blocks/src/blocks/table-of-contents/front.build.js?ver=3.2.2" id="ultimate_blocks-table-of-contents-front-script-js"></script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-includes/js/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-includes/js/masonry.min.js?ver=4.2.2" id="masonry-js"></script> <script type="text/javascript" id="mcluhan_global-js-extra"> /* <![CDATA[ */ var mcluhan_ajaxpagination = {"ajaxurl":"https:\/\/www.dmitrymakarov.ru\/wp-admin\/admin-ajax.php","query_vars":"{\"page\":\"\",\"pagename\":\"python\\\/random-11-04\"}"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.dmitrymakarov.ru/wp-content/themes/mcluhan/assets/js/global.js?ver=2.1.1" id="mcluhan_global-js"></script> </body> </html>