PokerOddsCalc عبارة عن أداة بسيطة لتقييم أوراق البوكر يمكنها محاكاة أنواع بوكر Texas Hold'em أو Omaha. معظم الآلات الحاسبة لاحتمالات البوكر النقية المكتوبة بلغة Python تستخدم حاليًا إما جدول تجزئة لتخزين معلومات البطاقة كبتات لتحسين الأداء أو استخدام تصميم OOP قوي، مما يضحي بالأداء. الهدف التطويري لهذا المشروع هو تحقيق كفاءة محاكاة عالية نسبيًا دون استخدام جدول التجزئة.
قم بمراجعة demo.ipynb لإلقاء نظرة على جميع الوظائف التي تدعمها الأداة أو تابع أدناه للحصول على بعض الأمثلة المختصرة.
التثبيت من جيثب
$ pip install git+https://github.com/johnsoong216/PokerOddsCalc.git
من أجل معالجة البيانات بسرعة عالية، يتم تحويل جميع معلومات البطاقة إلى مصفوفات numpy لتحسين السرعة.
يتم أخذ مدخلات البطاقة بتنسيق الرقم: 23456789TJQKA متبوعًا بالنوع: dcsh.
لترتيب البطاقات، نستخدم نظامًا سداسيًا عشريًا لتعيين قوة البطاقة من البطاقة الأكثر أهمية إلى البطاقة الأقل أهمية. يوجد 7462 توزيع ورق مميز في البوكر، لذا أنشأنا خوارزمية تحول توزيع الورق إلى قيمة عددية.
أولاً، نحدد ما إذا كانت مجموعة البطاقات الخمس مناسبة أم لا. يمكن أن يحدد هذا بسرعة نوع الأيدي المتعددة.
ثم نعمل مع القيم العددية للبطاقات حيث يتم تمثيل 2 إلى A بأعداد صحيحة من 2 إلى 14.
نقوم بفرز البطاقات لتحديد نوع البطاقة بسرعة.
الخطوة الأولى
الخطوة الثانية
الخطوة الثالثة
خاتمة
لعبة الاستيراد
from PokerOddsCalc import HoldemTable , OmahaTable
أنشئ لعبة، وحدد عدد اللاعبين ونوع المجموعة (المجموعة الكاملة أو المجموعة القصيرة)
ht = HoldemTable ( num_players = 5 , deck_type = 'full' ) # Will Create Three Players: Player 1 - 5
قم بتوزيع البطاقات بشكل عشوائي عن طريق استدعاء وظيفة next_round() في أي خطوة في اللعبة، أو قم بتعيينها يدويًا
ht . add_to_hand ( 1 , [ 'Td, ' Ad ']) # Assign Player 1
ht . next_round () # Assign all other players randomly
قم بالمحاكاة لتوليد النتائج، وحدد عدد السيناريوهات ونوع حساب الاحتمالات (لمزيد من التفاصيل، يرجى مراجعة demo.ipynb )
ht . simulate ()
#
{ 'Player 1 Win' : 50.31 ,
'Player 1 Tie' : 3.84 ,
'Player 2 Win' : 12.09 ,
'Player 2 Tie' : 0.41 ,
'Player 3 Win' : 11.4 ,
'Player 3 Tie' : 3.84 ,
'Player 4 Win' : 11.05 ,
'Player 4 Tie' : 0.41 ,
'Player 5 Win' : 11.31 ,
'Player 5 Tie' : 0.41 }
عرض الجدول الحالي أو توزيع الورق الحالي أو النتيجة الحالية (إذا انتهت اللعبة)
ht . view_table ()
ht . view_hand ()
ht . view_result ()