Excelде лотерея симуляциясы

Лотерея ийгилик үчүн аңчылык эмес,

бул утулгандарга аңчылык.

Көз арткан үзгүлтүксүз (жана көбүнчө акыркы убакта) адамдар мага лотереяга байланыштуу ар кандай эсептөөлөр боюнча жардам сурап жазышат. Кимдир бирөө Excelде утуп алган номерлерди тандоонун жашыруун алгоритмин ишке ашыргысы келсе, кимдир бирөө өткөн тираждардан түшүп калган сандардан үлгүлөрдү тапкысы келет, кимдир бирөө лотереянын уюштуруучуларын арам оюнда кармагысы келет.

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

Тапшырма 1. Жеңүү ыктымалдыгы

Мисал катары 6 лотереянын ичинен классикалык Stoloto 45ны алалы. Эрежеге ылайык, 10дан 6 номердин баарын тапкандар гана супер байге алышат (эгер байге фондунун калдыктары мурунку тираждардан топтолгон болсо, 45 миллион рубль же андан көп). Эгер сиз 5ти ойлосоңуз, анда 150 миң рубль аласыз, 4 болсо - 1500 рубль. , эгерде 3 сандын ичинен 6 номер болсо, анда 150 рубль, 2 номер болсо – билетке кеткен 50 рублди кайтарып бересиз. Болгону бирөөнү же эч кимди ойлобоңуз – оюн процессинен эндорфиндерди гана алыңыз.

Жеңиштин математикалык ыктымалдыгын стандарттык функцияны колдонуу менен оңой эсептесе болот NUMBERCOMB (БИРИКТИРҮҮ), мындай учурда 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) жана ага функция кошуу ТЕКСТ (ТЕКСТ)бир орундуу сандарга чейин жана кийинки алдыңкы нөлдөрдү жана жылдызчаларды кошуу үчүн, COUNTIF B тилкесиндеги айкалыштын каалаган жеринен сандын пайда болушун издейт. Ошондой эле, көбүрөөк айкын болушу үчүн, диаграмманы жыйынтыктар боюнча түзөбүз жана жыштыктарды иреттейбиз. кемүү тартибинде:

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. аттуу “акылдуу” таблица түзөлү tableGenerator, мында биринчи тилке 1ден 45ке чейинки сандарыбыз болот.
  2. Экинчи тилкеде ар бир сандын салмагын киргизиңиз (ал бизге бир аз кийинчерээк керек болот). Эгерде бардык сандар биз үчүн бирдей баалуу болсо жана биз аларды бирдей ыктымалдуулук менен тандагыбыз келсе, анда салмакты бардык жерде 1ге барабар коюуга болот.
  3. Үчүнчү тилкеде биз функцияны колдонобуз SLCHIS (RAND), которая в Excel генерирует случайное дробное число от 0 до 1, добавив к нему вес из предыдущего столбца. Таким образом каждый раз при пересчёте листа (нажатии на клавишу F9) алардын ар биринин салмагын эске алуу менен 45 кокустук сандын жаңы топтому түзүлөт.
  4. Функцияны колдонгон төртүнчү мамычаны кошолу RANK (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-жылдагы тиркеме барагынан макроко көчүрүлөт.
  • Кийинки алты тилке үчүн маалыматтар (КП) макро барактан алынат генератор, бул жерде биз кокус сандар генераторун ишке ашырдык (жогоруда 4 маселени караңыз).
  • Q тилкесинде биз түшүрүлгөн сандар менен функциянын жардамы менен түзүлгөндөрдүн ортосундагы дал келүүлөрдүн санын эсептейбиз СУПРОДУКТ (СУПРОДУКТ).
  • В столбце 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 'объявляем переменные для ссылки на листы Set wsGame = Worksheets("Игра") Set wsNumbers = Worksheets(") wsArchive = Worksheets("Тиражи 2022") iGames = wsGame.Range("C1") 'количество тиражей iTickets = wsGame.Range("C2") 'количество тиражей билетов в каждом тираже в i = 5 таблица таблицаларында. ("6:1048576").Delete 'очищаем старые данные For t = 1 To iGames For b = 1 To iTickets 'копируем выигравшие номера с листа Тиражи 2022 и вставляем на лист Игра wsArchive(Res1). (1, 1).Copy Destination:=wsGame.Cells(i, 10) 'копируем и вставляем специальной вставкой значений сгенерированные номера с листа Генератор wsNumbers.Range("G1:L4").Copy wsGame (i,C4s) .PasteSpecial Paste:=xlPasteValues ​​i = i + 11 Кийинки б Кийинки t Аягы Sub  

Сары уячаларга керектүү баштапкы параметрлерди киргизүү жана макросту өткөрүү калды Иштеп чыгуучу – Макрос (Иштеп чыгуучу — Макрос) же баскычтоптун жарлыгы 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де лотерея симуляциясы

Комментарийлер, алар айткандай, ашыкча - бардык учурларда депозиттин төгүлүшү сөзсүз болот 🙂

Таштап Жооп