Як вигравати у грі камінь-ножиці-папір? (Реалізація оптимальної стратегії у Wolfram Mathematica). Як завжди перемагати у грі "камінь, ножиці, папір"

Переклад поста Джона Маклун (Jon Mcloone, директор департаменту міжнародного бізнесу та стратегічного розвитку Wolfram Research). Оригінал посту: How to Win at Rock-Paper-Scissors
Завантажити пост у вигляді документа Mathematica

З точки зору математики гра камінь-ножиці-папір (див. Додаток 1 наприкінці) не є особливо цікавою. Стратегія рівноваги Неша дуже проста: випадково і з однаковою ймовірністю вибирайте з трьох варіантів, і за умови проведення великої кількості ігор ні ви, ні ваш суперник не зможете перемогти. Хоча при обчисленні стратегії за допомогою комп'ютера все ще можна виграти у людини після великої кількості ігор.

Моя дев'ятирічна дочка показала мені програму, створену їй за допомогою Scratch, яка вигравала абсолютно щоразу просто відстежуючи, який вибір ви зробили, перед тим, як зробити свій! Але я познайомлю вас із простим рішенням, яке виграє у людини в камінь-ножиці-папір без обману.

Оскільки того, хто завжди робить абсолютно випадковий вибір перемогти неможливо, ми будемо розраховувати на те, що люди не дуже випадкові. Якщо комп'ютер зможе помітити якийсь шаблон, за яким ви дієте у своїх спробах бути випадковим, він стане на крок ближче до того, щоб передбачити ваші майбутні дії.

Я думав про створення алгоритму як одну з тем нашого курсу статистики в рамках концепції Computer-Based Math. Але перша ж стаття, на яку я натрапив у пошуках передбачуваних алгоритмів, розглядала рішення за допомогою складної конструкції на основі розподілу. Це рішення було важким для розуміння школяра (а можливо, і для мене), тому я вирішив розробити простіше рішення, яке я міг би пояснити простими словами. І нехай навіть воно вже і було розроблено раніше, набагато веселіше створювати речі по-своєму, ніж знаходити їхню готову реалізацію.

Для початку нам необхідно просто мати можливість розпочати гру. На той момент вже була розроблена і доступна демонстрація, що дозволяє грати в камінь-ножиці-папір, але це було не зовсім те, що мені потрібне, тому я написав свою версію. Цей пункт не вимагає особливих пояснень:

Здебільшого цей код описує інтерфейс користувача і правила гри. Уся стратегія комп'ютерного гравця міститься у цій функції:

Де 1 відповідає каменю, 2 - папері та 3 - ножицям. Це оптимальне рішення. Як би ви не грали, ви виграєте стільки ж ігор, скільки і комп'ютер, і ваш показник перемог коливатиметься в районі нуля.

Отже, тепер було б цікаво переписати функцію chooseGoщоб здійснювати передбачення щодо вашого вибору, використовуючи дані про останні ігри, що зберігаються в змінній history. Першим кроком буде аналіз проведених протягом останніх кількох ігор виборів та пошук усіх випадків входження будь-якої послідовності. Спостерігаючи за тим, що людина робила в кожній наступній грі, ми можемо виявити шаблон поведінки.

Перший аргумент функції є історію минулих ігор. Наприклад, у наборі даних, наведених нижче, комп'ютер (друга колонка - другий елемент кожного підписку) щойно зіграв папір (їй відповідає число 2) проти каменю, зіграного людиною (число 1). Це видно за останнім елементом списку. Також видно, що така ситуація вже виникала двічі, і обидва рази наступним ходом людини знову був камінь.

Другий аргумент це кількість останніх елементів історії, за якими і вестиметься пошук. В даному випадку як аргумент функції передано число 1, що здійснює пошук даних тільки випадків входження (1,2). Якщо ми виберемо 2, то функція шукатиме входження послідовності (3,2), (1,2) і поверне порожній список, оскільки така послідовність раніше не зустрічалася.

Третій аргумент, All, вказує на те, що в послідовностях повинні збігатися і ходи людини, і ходи комп'ютера. Аргумент можна змінити на 1, щоб дивитися тільки на історію ходів людини (тобто припускаючи, що людський вибір залежить тільки від його попередніх ходів), або 2, щоб звертати увагу тільки на другий стовпець, тобто на історію ходів комп'ютера (тобто припускаючи, що людина відповідає на попередні ходи комп'ютера незалежно від того, які сама робила ходи і, отже, незалежно від того, виграв він чи програв).

Наприклад, в даному випадку ми знаходимо, що людина вибирала після каменю, незалежно від того, що в тих же іграх вибирала комп'ютер.

Маючи велику кількість даних, ми можемо обійтися лише аргументом All, і програма зможе сама вирішити, чиї ходи, комп'ютера чи людини, важливіші. Наприклад, якщо історія ходів комп'ютера ігнорується людиною в ході здійснення вибору, тоді набір даних, отриманий для будь-якої історії ходів комп'ютера, матиме той самий розподіл, що й для будь-якої іншої історії ходів комп'ютера, за умови, що даних про попередні ігри достатньо. Здійснюючи пошук по всіх парах ігор, отримаємо той же результат, як і якби ми спочатку вибирали дані з історії ходів комп'ютера, а потім використовували це підмножина для наведеної вище функції. Те саме відбудеться у випадку, якщо має значення лише історія ходів комп'ютера. Але при цьому, шукаючи при врахуванні обох цих припущень окремо можна отримати більш вірні збіги в історії, і найбільше це проявляється у випадках, коли набір даних про ігри спочатку малий.

Таким чином, з цих двох перевірок ми можемо виявити, що перший дає оцінку в 100%, що наступним вибором людини буде камінь, а другий показує, що з 75% ймовірністю людина вибере камінь і з 25% ймовірністю - ножиці.

І тут я дещо зупинився у вирішенні завдання.

У цьому випадку два передбачення принаймні більш-менш близькі за результатом, хоч і розходяться в чисельних значеннях ймовірностей. Але якщо ви проводите пошук за трьома «зрізами» даних з рядом різних довжин історії, і результати передбачень суперечливі - як їх об'єднати?

Я помістив замітку про цю проблему в папку «Написати про це в блог» і забув про неї доти, доки кілька тижнів тому не відбулася суперечка про те, як висвітлити концепцію "статистичної значущості" в курсі Computer-Based Math.

Я зрозумів, що питання полягає не в тому, як скомбінувати отримані прогнози, а в тому, як визначити, яке з прогнозів найбільш значуще. Одне з передбачень могло б бути більш значущим, ніж інші, оскільки воно відображає більш виражену тенденцію або, можливо, ґрунтується на більшому наборі даних. Це було неважливо для мене, і тому я просто використав p-значення тесту на значущість (з нульовою гіпотезою про те, що обидва гравці грають випадково), щоб упорядкувати отримані прогнози.

Думаю, мені варто було б прислухатися до нашого ж першому принципупро те, що першим кроком у вирішенні будь-якої математичної проблеми є "правильна постановка питання".

Тепер, якщо ми візьмемо останній отриманий нами результат, виявляється, що найкраще пророцтво - камінь, що має p-значення 0.17. Це означає, що лише з ймовірністю 0.17, дані, які використовуються для цього передбачення, відхиляються від дискретного рівномірного розподілу ( DiscreteUniformDistribution[(1,3)]), причому швидше випадково, ніж через систематичну помилку, вироблену людською чи з будь-якої іншої причини, яка могла змінити розподіл.

Що менше це p-значення, то впевненішими ми можемо бути в тому, що знайшли справжній шаблон поведінки. Так що ми просто здійснюємо прогнози для різних довжин історії та зрізів даних і вибираємо прогноз з найменшим p-значенням.

І робимо такий вибір, що поб'є вибір людини.

Тут ви бачите результат. Ви можете завантажити та самостійно випробувати його з сайту Wolfram Demonstrations.

Коли програма має занадто мало даних, вона грає випадково, так що ви починаєте на рівних. Спочатку, коли вона тільки починає навчатися, вона приймає кілька безглуздих рішень, тому ви можете вирватися вперед. Але після 30-40 ігор вона починає отримувати справді значущі пророцтва, і ви побачите, як ваш показник перемог опуститься в негативну область і так там і залишиться.

Звичайно, таке рішення добре лише проти примітивних спроб здаватися випадковим. Його передбачуваність робить його схильним до можливого програшу проти добре прорахованої і наміченої стратегії. Вкрай цікаво спробувати перемогти цю програму за допомогою інтуїції. Це можливо, але якщо ви перестанете думати або думати занадто старанно, ви скоро відстанете. Звичайно, програма могла б з легкістю це зробити, застосовуючи той самий алгоритм із метою передбачити наступний хід цієї програми.

Такий підхід веде до початку «гонки озброєнь», змагань з написання алгоритмів, які виграватимуть у камінь-ножиці-папір у алгоритму суперника, і єдиний спосіб припинити це - повернутися до стратегії рівноваги Неша, здійснюючи вибір через RandomInteger[(1,3)].

Додаток 1
У тому випадку, якщо ви не знаєте, як грати в цю гру, правила такі: ви вибираєте камінь, ножиці або папір, використовуючи один із трьох жестів, показаних одночасно вами та вашим суперником. Камінь перемагає ножиці (робить їх тупими), ножиці перемагають папір (вони його ріжуть), а папір перемагає камінь (вона його загортає). Переможець отримує одне очко, у разі нічиєї обидва гравці не отримують очок.

Дякую за допомогу, надану у перекладі цієї посади.

Немає людини, яка не грала у гру «Камінь, ножиці, папір». Адже їй можна не лише зайняти час, а й вирішити, наприклад, суперечку.

Тим часом, не всі знають, що дана гра зародилася в Китаї, пізніше, в 19-20 століттях, набула популярності в багатьох країнах світу, в тому числі й Росії. А на початку 21-го століття з'явилися і перші чемпіонати з цього виду спорту зі значними призовими фондами.

Щоб виграти в цю гру не потрібно бути екстрасенсом - читати думки супротивника або програмувати його дії, досить просто дотримуватися деяких правил.

1. Чоловіки мають тенденцію першим викидати «камінь», тому що він сприймається як сила та рішучість. Тому на цьому можна підловити сильну половину людства, вони досить часто трапляються на цьому. Використовуючи цю особливість, легко можна перемогти, показуючи «папір». Але пам'ятайте, що з досвідченими гравцями такий трюк не спрацює.

2. Якщо вам "пощастило" грати з досвідченим гравцем, він навряд чи вперше покаже "камінь" - це надто очевидно. Тому «ножиці» – досить оптимальний варіант.

3. Скажіть своєму опоненту, що збираєтеся показати і потім... покажіть, що сказали. Чому? До тих пір, поки не граєте з кимось, хто не знає про ваше нахабство, ви можете, повідомивши про свої наміри, отримати вигідний для вас кидок. Наприклад, якщо ви заявите «камінь», то ваш противник не викидатиме «папір», вважаючи, що ви покажете «ножиці». Цей хід може принести вам перемогу чи нічию.

4. Якщо ваш противник двічі викинув «ножиці», то шанс, що він покаже їх утретє, є дуже незначним. Найімовірніше, він викине «папір» чи «камінь». В цьому випадку вам доцільно буде показати «папір».

5. Під час другого раунду недосвідчені гравці підсвідомо показують те, що могло перемогти їх у минулому. Наприклад, якщо ваш противник програвав «папером», він покаже «ножиці», тоді ваш хід – «камінь». Якщо ж уперше суперник викинув «камінь», то вдруге доцільно показувати «ножиці»: він, швидше за все, вирішить викинути «папір».

6. Трапляються ситуації, коли ви не знаєте, що викинути. У такому разі раджу вам показати «папір». За статистикою, «ножиці» показують дещо рідше за все інше. Втім, нещодавно британські вчені встановили, що найвиграшніша стратегія у грі – це показувати «ножиці». Справа в тому, що найчастіше опонент підсвідомо чекає на жест «камінь», тому й показує «папір».

Вдалої гри!


Одному Богу відомо, скільки спірних ситуацій у дитинстві вирішувалося за допомогою гри в «Камінь, ножиці, папір». Та що там малеча, повно дорослих дітлахів, що знаходять легкий вихід за лічені секунди і викинутий знак. То що ховається за невигадливим викиданням пальців: воля випадку чи вивірена стратегія? Вчені твердо знають відповідь та дають свій переможний рецепт.

Зовсім недавно колектив китайських дослідників із Чжецзянського університету (Zhejiang University) сповістив світ про сміливі висновки своїх психологічних тестів. Вчені з грудня 2010 р. до березня поточного провели 5 експериментальних циклів. Кожен цикл включав 12 сесій з 6 учасниками. Загалом загальна кількість піддослідних досягла 360 осіб. Співвідношення статей склало 217:143 з жіночою перевагою (просто дівчата активніше записувалися). Студент чи аспірант міг брати участь у дослідженні лише один раз.

Люди були поза зоною видимості один одного, перед екранами монітора. Тим самим було виключено вербальний та візуальний контакт. Кожен із учасників витратив від півтори до двох годин на 300 ігор із випадковим суперником. Стимулом до перемог служила невелика грошова винагорода за кожен виграний раунд. І ось які висновки з цього вийшли...

То що треба знати для перемоги? Після спостереження за величезною кількістю «битв», вчені виявили, що гравець, який переміг свого супротивника в поточній партії, з більшою ймовірністю повторить свої дії в наступному раунді, а з меншою ймовірністю щось змінюватиме.

З іншого боку, якщо гравець програє два або більше разів поспіль, він припинить показувати невдалу комбінацію і намагатиметься розбити саме той знак, який щойно дозволив опоненту перемогти його.

Таким чином, якби гравець А мав низку програшів, а гравець Б щойно викинув ножиці, і тим самим розрізав папір А, то А, швидше за все, викине камінь, який дасть непогані шанси на виграш, тому що Б, ймовірно, дотримуватиметься тієї ж переможної тактики. Психологія поведінки проста: перемагаєш – не змінюєшся, програєш – перемикаєшся.

Програли? Викиньте той знак, який б'є останній переможний знак вашого опонента.

Виграли? Не продовжуйте показувати той же знак, натомість викиньте останню комбінацію вашого суперника, що програв.

Досі не до кінця зрозуміло? Ось які виграшні стратегії допоможуть вам залишатися непереможними:

Якщо ви перемогли в останній грі...

Якщо ви програли в останній грі (і супротивник не в курсі цієї методики)…

  • …викинувши камінь, переходьте до ножиць у наступній сутичці
  • …викинувши ножиці, переходьте до паперу у наступній сутичці
  • …викинувши папір, переходьте до каменю у наступній сутичці

Якщо ви програли в останній грі (і супротивник у курсі цієї методики)…

  • …викинувши камінь, переходьте до паперу у наступній сутичці
  • …викинувши ножиці, переходьте до каменю в наступній сутичці
  • …викинувши папір, переходьте до ножиць у наступній сутичці

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

І насамкінець додам, що провину за програні машини, будинки та дружини в «камінь, ножиці, папір», перш за все, варто покладати на свій азарт, а не китайські уми та автора цих рядків.

"Камінь, ножиці, папір" - гра, знайома кожному ще з дитинства, вона вирішувала навіть найсерйозніші чоловічі суперечки. Я завжди вважав, що ця гра заснована лише на везінні, але це далеко не так. Сьогодні "Так просто!"відкриє тобі кілька невеликих секретів, які дозволять тобі завжди вигравати у цю гру. І тоді ти їхатимеш на передньому сидінні, а за пивом побіжить хтось інший.

Секрет перемоги у «Каміні, ножиці, папір»

Якщо ти вже забув правила, нагадаю: камінь ламає ножиці, які ріжуть папір, а папір накриває камінь.

Колектив китайських дослідників із Чжецзянського університету провів величезну кількість експериментів та спостережень, результати яких показали деякі закономірності: гравець, який переміг свого супротивника в поточній партії, найімовірніше повторить свої дії в наступному раунді і навряд чи стане щось змінювати.

З іншого боку, якщо гравець програє два або більше разів поспіль, він припинить показувати невдалу комбінаціюі намагатиметься розбити саме той знак, який щойно дозволив опоненту перемогти його.

Виходячи з цього, можна вивести таку виграшну стратегію

  • Якщо ти програв, викинь знак, який б'є останній переможний знак твого опонента.
  • Якщо ти виграв, не продовжуй показувати той самий знак, натомість викинь останню комбінацію твого суперника, що програв.

Ще кілька важливих закономірностей

  • Найчастіше представники сильної статі першими використовують камінь, тому якщо твій суперник - чоловік, спробуй кинути папір.
  • Якщо ти змагаєшся із досвідченим гравцем, є велика ймовірність, що він спробує зіграти на твоїй наївності та кине папір. Використовуй ножиці.
  • Запам'ятай, що якщо твій суперник уже двічі поспіль викинув камінь, ця людина ненавидить бути передбачуваною і здебільшого використовує ножиці. Кинь камінь.
  • Стеж за пальцями суперника. Найлегші рухи підкажуть тобі, який хід противник збирається використати. Усі пальці напружені – камінь. Усі пальці розслаблені – папір. Тільки два пальці напружені – ножиці.
  • Папір використовують найрідше у грі - у 29,6% випадків. Найчастіше використовують ножиці – 35 %. І ще частіше камінь – 35,4 %. Використовуй ефект несподіванки.

Розкажи про ці маленькі хитрощі своєму, він буде в повному захваті від того, що завжди виграватиме суперечки зі своїми однокласниками!


Ми звикли думати, що стара добра гра «Камінь, ножиці, папір» побудована на чистому везінні (або випадковості). Але, якби це було так, гратив ній було б не так цікаво.

Корупція.Спорт з посиланням на AdMe.ru розкриває вам кілька секретів, використовуючи які ви завжди можете вигравати в цій битві. І тоді ви їхатимете на передньому сидінні, а за пивом побіжить хтось інший.

По-перше, почнемо з основ. Як ви, мабуть, знаєте, умовно камінь ламає ножиці, які ріжуть папір, а папір накриває камінь.

Після спостереження за величезною кількістю таких «битв» колектив китайських дослідників із Чжецзянського університету виявив, що гравець, який переміг свого супротивника в поточній партії, з більшою ймовірністю повторить свої дії у наступному раунді, а з меншою ймовірністю стане щось змінювати.

З іншого боку, якщо гравець програє два або більше разів поспіль, він припинить показувати невдалу комбінаціюі намагатиметься розбити саме той знак, який щойно дозволив опоненту перемогти його.

Тому складається виграшнастратегія:

  • Програли?Викиньте той знак, який б'є останній переможний знак вашого опонента.
  • Виграли?Не продовжуйте показувати той же знак, натомість викиньте останню комбінацію вашого суперника, що програв.

І ще кілька порад:

  • Чоловіки часто першим кидають камінь. Якщо виграєте проти чоловіка, спробуйте папір.
  • Досвідчені гравці спробують зіграти на вашій наївності та кинуть папір. Використовуйте ножиці.
  • Коли ви бачите, що опонент уже двічі викинув камінь, знайте: людина ненавидить бути передбачуваною і здебільшого використовує ножиці. Використовуйте камінь.
  • Слідкуйте за пальцями суперника. Найлегші рухи підкажуть вам, який хід противник збирається використати. Усі пальці напружені – камінь. Усі пальці розслаблені – папір. Тільки два пальці напружені – ножиці.
  • Папір використовують найрідше у грі — у 29,6% випадків. Найчастіше використовують ножиці – 35%. І ще трохи частіше камінь – 35,4%. Використовуйте ефект несподіванки.