Excel бағдарламасындағы лотереяны модельдеу

Лотерея сәттілікке аң аулау емес,

бұл жеңілгендерге аң аулау.

Қызғанышпен (және соңғы кезде жиі) адамдар маған лотереяға қатысты әртүрлі есептеулерде көмек сұрап хат жазады. Біреу Excel бағдарламасында ұтыс нөмірлерін таңдаудың құпия алгоритмін іске асырғысы келеді, біреу өткен ұтыс ойындарынан түсіп қалған сандардан үлгілерді тапқысы келеді, біреу лотерея ұйымдастырушыларын арам ойында ұстағысы келеді.

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

Тапсырма 1. Жеңіске жету ықтималдығы

Мысал ретінде 6 лотереяның классикалық Stoloto 45 ойынын алайық. Ережеге сәйкес, тек 10 нөмірдің 6-ын тапқандар ғана супер жүлдеге ие болады (егер жүлде қорының қалдығы алдыңғы ұтыс ойынынан жиналған болса, 45 миллион рубль немесе одан да көп). Егер сіз 5-ті болжасаңыз, сіз 150 мың рубль аласыз, 4 болса - 1500 рубль. , егер 3-дан 6 нөмір болса, онда 150 рубль, 2 нөмір болса - билетке жұмсалған 50 рубльді қайтарасыз. Тек біреуін немесе ешқайсысын таппаңыз - ойын процесінен тек эндорфиндерді алыңыз.

Жеңіске жетудің математикалық ықтималдығын стандартты функция арқылы оңай есептеуге болады NUMBER ТАРАҚ (Біріктіру), мұндай жағдай үшін Microsoft Excel бағдарламасында қол жетімді. Бұл функция M санының N санының комбинацияларының санын есептейді. Сонымен, біздің «6-тен 45» лотереясы үшін бұл:

=ЧИСЛКОМБ(45;6)

… бұл 8-ге тең, осы лотереядағы барлық мүмкін комбинациялардың жалпы саны.

Егер сіз ішінара жеңіске жету ықтималдығын (2-дан 5-6 сан) есептегіңіз келсе, алдымен осындай опциялардың санын есептеу керек, ол болжанған сандар комбинацияларының санының көбейтіндісіне тең. Қалғандардың ішінен болжанбаған сандар саны бойынша 6 (45-6) = 39 сан. Содан кейін біз барлық ықтимал комбинациялардың жалпы санын (8) әрбір опция үшін алынған жеңістер санына бөлеміз және біз әрбір жағдай үшін ұтыс ықтималдығын аламыз:

Excel бағдарламасындағы лотереяны модельдеу

Айтпақшы, мысалы, біздің елдегі ұшақ апатынан қайтыс болу ықтималдығы миллионнан 1-ге жуық деп бағаланады. Ал казинода рулеткада ұту ықтималдығы, барлығын бір нөмірге тігу 1-ден 37-ге дейін.

Жоғарыда айтылғандардың бәрі сізді тоқтатпаса және сіз әлі де ойнауға дайын болсаңыз, жалғастырыңыз.

Тапсырма 2. Әрбір санның пайда болу жиілігі

Алдымен белгілі бір сандар қандай жиілікте түсетінін анықтайық. Идеал лотереяда талдау үшін жеткілікті үлкен уақыт аралығын ескере отырып, барлық шарлардың ұтыс үлгісінде болу ықтималдығы бірдей болуы керек. Шындығында, лотерея барабанының дизайн ерекшеліктері және шарлардың салмақ пішіні бұл суретті бұзуы мүмкін, ал кейбір шарлар үшін құлау ықтималдығы басқаларға қарағанда жоғары/төмен болуы мүмкін. Бұл гипотезаны тәжірибе жүзінде тексеріп көрейік.

Мысалы, 2020 жылғы 21 лотерея ұтысының 6-45-те олардың ұйымдастырушысы Столото веб-сайтындағы деректерді талдауға ыңғайлы, атауы бар осындай «ақылды» кесте түрінде жасалған мәліметтерді алайық. tabArchive Circulation. Розыгрыши проходят два раза в день (в 11 утра и в 11 вечера), т.б. в этой таблице у нас полторы тысячи тиражей-строк — вполне достаточная для начала выборка для анализа:

Excel бағдарламасындағы лотереяны модельдеу

Әрбір санның пайда болу жиілігін есептеу үшін функцияны пайдаланыңыз COUNTIF (COUNTIF) және оған функция қосыңыз TEXT (МӘТІН)бір таңбалы сандарға дейін және кейінгі жетекші нөлдерді және жұлдызшаларды қосу, осылайша COUNTIF В бағанындағы комбинацияның кез келген жерінен санның пайда болуын іздейді. Сондай-ақ, нақтырақ болу үшін диаграмманы нәтижелер бойынша құрастырамыз және жиіліктерді сұрыптаймыз. кему ретімен:

Excel бағдарламасындағы лотереяны модельдеу

Орташа алғанда, кез келген доп 1459 ұтыс * 6 доп / 45 сан = 194,53 рет түсуі керек (статистикада дәл осылай аталады). математическим ожиданием), но хорошо видно, что некоторые числа (27, 32, 11…) выпадали заметно чаще (+18%), а некоторые (10, 21, 6…) наоборот заметно реже (-15%), чем основная масса. Соответственно, мүмкін осы ақпаратты стратегиялық стратегиялар үшін пайдалану, т.б. либо ставить на те шары, что выпадают чаще, либо наоборот — делать ставку на редко выпадающие шары в надежде, что оны міндетті түрде бас тарту.

Тапсырма 3. Қандай сандар көптен бері сызылмады?

Тағы бір стратегия ұтыс ойынының жеткілікті көп санымен ерте ме, кеш пе 1-ден 45-ке дейінгі барлық қол жетімді сандардың әрқайсысы түсіп қалуы керек деген идеяға негізделген. Сондықтан, егер кейбір нөмірлер жеңімпаздар арасында ұзақ уақыт бойы пайда болмаса («суық доптар»), онда болашақта оларға бәс тігу қисынды. 

Можно легко найти все давно не выпадавшие номера, если отсортировать наш архив тиражей за 2020-21 год по убыванию даты және функцияларды пайдалану КӨБІРЕК АШЫҚ (МАТЧ). Ол әрбір нөмірді іздеу үшін жоғарыдан төменге қарай (яғни жаңадан ескі жүгірістерге дейін) іздейді және осы нөмір соңғы рет түсірілген жүгірудің сериялық нөмірін береді (жыл соңынан басына дейін):

Excel бағдарламасындағы лотереяны модельдеу

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

Басқа ойын стратегиясы сандарды болжау кезінде психологиялық факторды жоюға негізделген. Ойыншы бәс тігу арқылы сандарды таңдағанда, ол санадан тыс мұны мүлдем ұтымды емес жасайды. Статистикаға сәйкес, мысалы, 1-ден 31-ге дейінгі сандар қалғандарына қарағанда 70% жиі таңдалады (сүйікті күндер), 13 сирек таңдалады (қарғыс атқыр ондаған), құрамында «сәтті» жеті бар сандар жиі таңдалады және т.б. Бірақ біз барлық сандар бірдей болатын машинаға (лотерея барабанына) қарсы ойнаймыз, сондықтан мүмкіндігімізді теңестіру үшін оларды бірдей математикалық бейтараптықпен таңдаған дұрыс. Ол үшін Excel бағдарламасында кездейсоқ және ең бастысы қайталанбайтын сандар генераторын жасау керек:

    Excel бағдарламасындағы лотереяны модельдеу

: Бұл әрекетті орындау үшін

  1. атты «ақылды» кестені құрайық кесте генераторы, мұнда бірінші баған 1-ден 45-ке дейінгі сандарымыз болады.
  2. Екінші бағанда әрбір санның салмағын енгізіңіз (ол бізге сәл кейінірек қажет болады). Егер барлық сандар біз үшін бірдей құнды болса және біз оларды бірдей ықтималдықпен таңдағымыз келсе, онда салмақты барлық жерде 1-ге тең етіп орнатуға болады.
  3. Үшінші бағанда біз функцияны қолданамыз SLCHIS (RAND), Excel бағдарламасында генерирует случайное дробное число от 0 до 1, добавив к нему вес из предыдущего столбца. Таким образом каждый раз при пересчёте листа (нажатии на клавишу F9) олардың әрқайсысының салмағын ескере отырып, 45 кездейсоқ санның жаңа жинағы жасалады.
  4. Функцияны қолданатын төртінші бағанды ​​қосамыз RANK (РЕНК) вычислим ранг (позицию в топе) для каждого из чисел.

Енді функцияны пайдаланып 6-разряд бойынша алғашқы алты санды таңдау қалды КӨБІРЕК АШЫҚ (МАТЧ):

Excel бағдарламасындағы лотереяны модельдеу

При нажатии на клавишу F9 Excel парағындағы формулалар қайта есептеледі және әр жолы жасыл ұяшықтарда 6 санның жаңа жинағын аламыз. Сонымен қатар, В бағанында үлкенірек салмақ орнатылған сандар пропорционалды түрде жоғары дәрежеге ие болады және осылайша біздің кездейсоқ таңдау нәтижелерінде жиі пайда болады. Егер барлық сандар үшін салмақ бірдей болса, онда олардың барлығы бірдей ықтималдықпен таңдалады. Осылайша біз 6-тен 45-дан тұратын әділ және бейтарап кездейсоқ сандар генераторын аламыз, бірақ қажет болған жағдайда бөлудің кездейсоқтығына түзетулер енгізу мүмкіндігі бар.

Егер біз әрбір ұтыс ойынында бір емес, мысалы, бірден екі билетпен ойнауды шешсек, олардың әрқайсысында біз қайталанбайтын сандарды таңдаймыз, онда біз жай ғана төменгі жағынан жасыл диапазонға қосымша жолдарды қоса аламыз, дәрежеге 6, 12, 18 және т.б. қосу. г. тиісінше:

Excel бағдарламасындағы лотереяны модельдеу

Тапсырма 5. Excel бағдарламасындағы лотерея симуляторы

Осы тақырыптың апотеозы ретінде Excel бағдарламасында толыққанды лотерея тренажерін жасайық, онда кез келген стратегияларды сынап көруге және нәтижелерді салыстыруға болады (оңтайландыру теориясында ұқсас нәрсе Монте-Карло әдісі деп те аталады, бірақ ол оңайырақ болады. Біз үшін).

Барлығын мүмкіндігінше шындыққа жақын ету үшін, бұл 1 жылдың 2022 қаңтары екенін және бізде биылғы ұтыс ойындары бар екенін елестетіп көріңіз, оларда біз ойнауды жоспарлап отырмыз. Мен кестеге нақты төмендеген сандарды енгіздім tablTiraži2022, келесі есептеулерге ыңғайлы болу үшін қосымша сызылған сандарды бір-бірінен бөлек бағандарға бөлу:

Excel бағдарламасындағы лотереяны модельдеу

Бөлек парақта ойын аты бар «ақылды» кесте түрінде модельдеу үшін бос орын жасаңыз табИгра келесі пішін:

Excel бағдарламасындағы лотереяны модельдеу

Мұнда:

  • Жоғарыдағы сары ұяшықтарда біз макрос үшін біз қатысқымыз келетін 2022 жылғы ұтыс ойындарының санын (1-82) және әрбір ұтыс ойынында ойнайтын билеттер санын орнатамыз.
  • Алғашқы 11 бағанның деректері (AJ) 2022 жылғы ұтыс парағынан макрос арқылы көшіріледі.
  • Макрос келесі алты бағанға (KP) арналған деректер парақтан алынады генератор, мұнда біз кездейсоқ сандар генераторын іске асырдық (жоғарыдағы 4 мәселені қараңыз).
  • Q бағанында түсірілген сандар мен функцияның көмегімен жасалған сандар арасындағы сәйкестіктердің санын есептейміз SUMPRODUCT (ҚЫСТЫҚ).
  • В столбце R вычисляем финансовый результат (если не выиграли, то минус 50 рубль үшін билет, если выиграли, то приз — 50 р. за билет)
  • Соңғы S бағанында процестің динамикасын көру үшін бүкіл ойынның жалпы нәтижесін жиынтық жиынтық ретінде қарастырамыз.

Ал осы тұтас құрылымды жандандыру үшін бізге шағын макрос керек. Қойындыда әзірлеуші (Әзірлеуші) команда таңдау Visual Basic немесе пернелер тіркесімін пайдаланыңыз Alt+F11. Содан кейін мәзір арқылы жаңа бос модуль қосыңыз Кірістіру – модуль және сол жерге келесі кодты енгізіңіз:

Sub Lottery() Dim iGames Integer, iTickets As Integer, i As Long, t As Integer, b As Integer 'WsGame = Жұмыс парақтарын орнату("Игра") Set wsNumbers = Жұмыс парақтары(") wsArchive = Жұмыс парақтары("Тиражи 2022") iGames = wsGame.Range("C1") 'количество iTickets = wsGame.Range("C2") 'количество тиражей билетов в каждом тираже в i = 5 таблица таблицаларында. ("6:1048576"). Жою 'очищаем старые данные For t = 1 To iGames For b = 1 To iTickets 'копируем выигравшие номера с листа Тиражи 2022 және вставляем на лист Игра wsArchive(Cells1e). (1, 1).Copy Destination:=wsGame.Cells(i, 10) 'копируем и вставляем специальной вставкой значений сгенерированные номера с тізімі Генератор wsNumbers.Range("G1:L4").Copy wsGame,i.C4s .PasteSpecial Paste:=xlPasteValues ​​i = i + 11 Келесі b Келесі t Соңы Ішкі  

Сары ұяшықтарға қажетті бастапқы параметрлерді енгізу және макросты іске қосу қалады Әзірлеуші ​​– Макростар (Әзірлеуші ​​— макростар) немесе пернелер тіркесімі Alt+F8.

Excel бағдарламасындағы лотереяны модельдеу

Түсінікті болу үшін ойын кезіндегі ақша балансының өзгеруін көрсететін жиынтық сомасы бар соңғы бағанға диаграмма құруға болады:

Excel бағдарламасындағы лотереяны модельдеу

Әртүрлі стратегияларды салыстыру

Енді жасалған тренажердің көмегімен сіз 2022 жылы нақты ұтыс ойынында кез келген ойын стратегиясын сынап, оның әкелетін нәтижелерін көре аласыз. Егер сіз әр ұтыс ойынында 1 билет ойнасаңыз, онда «өріктің» жалпы суреті келесідей болады:

Excel бағдарламасындағы лотереяны модельдеу

Мұнда:

  • генератор бұл әр ұтыс ойынында генератор жасаған кездейсоқ сандарды таңдайтын ойын (бірдей салмақпен).
  • таңдаулылар бұл әр ұтыс ойынында біз бірдей сандарды қолданатын ойын – соңғы екі жылда ұтыс ойынында жиі түсіп қалған сандар (27, 32, 11, 14, 34, 40).
  • Сырттылар – бірдей, бірақ біз ең сирек ашылмалы сандарды қолданамыз (12, 18, 26, 10, 21, 6).
  • суық – барлық ұтыс ойындарында біз ұзақ уақыт бойы түспеген сандарды қолданамыз (35, 5, 39, 11, 6, 29).

Көріп отырғаныңыздай, үлкен айырмашылық жоқ, бірақ кездейсоқ сандар генераторы басқа «стратегияларға» қарағанда жақсырақ әрекет етеді.

Можно также попробовать играть большим количеством билетов в каждом тираже, чтобы перекрыть большее количество вариантов (осы топта бұл үшін осыған байланысты).

Кездейсоқ құрылған сандары бар бір билетпен әрбір ұтыс ойынында ойнау (бірдей салмақпен):

Excel бағдарламасындағы лотереяны модельдеу

Кездейсоқ құрылған сандармен (бірдей салмақпен) әрбір ұтыс ойынында 10 билетті ойнау:

Excel бағдарламасындағы лотереяны модельдеу

Кездейсоқ сандармен әрбір ұтыс ойынында 100 билетті ойнау (бірдей салмақпен):

Excel бағдарламасындағы лотереяны модельдеу

Пікірлер, олар айтқандай, артық - барлық жағдайда депозитті ағызу сөзсіз 🙂

пікір қалдыру