Texas Holdem Online
Free Holdem Online
PokerStrategy
BankrollMob
Your Poker Cash
888 Poker Online
PokerSource
Gratis poker bonus Texas Holdem poker bonus
Play texas holdem
Play Online Poker with Titan Poker
Poker ohne einzahlung
Gutshot Straight(2014) - Steven Seagal - 5/10
Rounders (1998) - Matt Damon, Edward Norton, John Malkovich - 8/10
The Cincinnati Kid (1965) - Steve McQueen - 8/10
All In: The Poker Movie (2009) - Matt Damon - 7/10
Maverick (1994) - Mel Gibson, Jodie Foster, Graham Greene - 7/10
Casino Royale (2006) - Daniel Craig, Eva Green - 8/10
High Roller: The Stu Ungar Story (2003) - 6/10
Lucky You (2007) - Eric Bana, Drew Barrymore - 6/10
Runner Runner (2013) - Justin Timberlake, Ben Affleck, Gemma Arterton - 6/10
The Grand (2007) - Dennis Farina - 6/10
Shade (2003) - Melanie Griffith, Sylvester Stallone - 7/10
Deal (2008) - Burt Reynolds - 7/10
Bet Raise Fold (2013) - 7/10
Players (2012) - Movie - 6/10
Freeze Out (2005) - 8/10
Luckytown (2000) - Kirsten Dunst - 7/10
Casino (1995) - Robert De Niro, Sharon Stone - 8/10
Ocean's Eleven (2001) - George Clooney, Brad Pitt, Matt Damon, Julia Roberts - 8/10
Ocean's Twelve (2004) - George Clooney, Brad Pitt, Catherine Zeta-Jones, Matt Damon - 7/10
Ocean's Thirteen (2007) - George Clooney, Brad Pitt, Al Pacino - 7/10
21 (2008) - Kevin Spacey, Laurence Fishburne - 8/10
Owning Mahowny (2003) - Philip Seymour Hoffman - 7/10
Lock Stock and Two Smoking Barrels (1998) - Jason Flemyng, Jason Statham - 8/10
Revolver (2005) - Jason Statham, Ray Liotta - 7/10
The Color of Money (1986) - Tom Cruise - 7/10
Bugsy (1991) - Warren Beatty, Annette Bening - 7/10
The Hangover (2009) - Bradley Cooper - 8/10
The Hangover Part II (2011) - Bradley Cooper - 7/10
The Hangover Part III (2013) - Bradley Cooper - 7/10
Las Vegas Parano (1998) - Johnny Depp, Benicio Del Toro - 8/10
Rat Race (2001) - Rowan Atkinson, Cuba Gooding Jr. - 7/10
California Split (1974) - 7/10
The Cooler (2003) - William H. Macy, Alec Baldwin - 7/10
Vegas Vacation (1997) - Chevy Chase - 7/10
The Gambler (2014) - Mark Wahlberg - 7/10
Lesser Prophets (1997) - Scott Glenn, John Turturro - 6/10
Croupier (1998) - Clive Owen - 7/10
Two for the Money (2005) - Al Pacino, Matthew McConaughey, Rene Russo - 7/10
Atlantic City (1980) - Burt Lancaster - 8/10
Havana (1990) - Robert Redford - 7/10
Bad Lieutenant (1992) - Harvey Keitel - 7/10
House of Games (1987) - Joe Mantegna - 7/10
Sydney (1996) - Philip Seymour Hoffman, Samuel L. Jackson, Gwyneth Paltrow - 7/10
Eight Men Out (1988) - John Cusack, Charlie Sheen - 7/10
Very Bad Things (1998) - Cameron Diaz, Christian Slater - 7/10
The Good Thief (2002) - Nick Nolte, Ralph Fiennes - 6/10
Phoenix (1998) - Ray Liotta, Anthony LaPaglia - 7/10
The Big Town (1987) - Matt Dillon, Tommy Lee Jones - 6/10
Factotum (2005) - Matt Dillon, Fisher Stevens - 7/10
The Music of Chance (1993) - Mandy Patinkin, M. Emmet Walsh - 8/10
Dinner Rush (2000) - Danny Aiello - 7/10
Intacto (2001) - Leonardo Sbaraglia - 7/10
All or Nothing (2013) - 7/10
Even Money (2006) - Kim Basinger, Danny DeVito, Forest Whitaker - 7/10
Winged Creatures (2008) - Kate Beckinsale, Guy Pearce - 6/10
Guns, Girls and Gambling (2012) - Gary Oldman, Christian Slater - 5/10
Killing Them Softly (2012) - Brad Pitt - 6/10
Leaving Las Vegas (1995) - Nicolas Cage, Elisabeth Shue - 8/10
The Game (1997) - Michael Douglas, Sean Penn, Deborah Kara Unger - 8/10
In Time (2011) - Justin Timberlake, Amanda Seyfried, Olivia Wilde - 8/10
Rain Man (1988) - Dustin Hoffman, Tom Cruise - 8/10
What Happens in Vegas (2008) - Cameron Diaz, Ashton Kutcher - 7/10
Waking Ned (1998) - 8/10
Casino Jack (2010) - Kevin Spacey - 6/10
no deposit poker new poker bankroll gratis bonus
Poker ohne einzahlung
piesne o poker a hazardné hry
ABC Poker
Ruleta herné systémy
Ako vyhrať v rulete
Martingal ruleta systém
Ruleta systém Shaun
Systém ulíc ruleta (ulica systém)
Systém Fibonacci ruleta
Systémy rulety - systém Parlay
Systémy rulety - systém 63
Systémy rulety - Labouchere System
D'Alembert Systém
Psychológie hráča pokeru a gambler
Vtipy poker a najlepšie vtipy
Kartové hry
Bonus za registráciu
downswing poker
Poker Fórum - najlepšie recenzia na svete
Poker ako dielo - dodatočný zdroj príjmov
Okamžitá žiadny vklad bonus
Zadarmo kasíno poker peniaze
Sport disciplína je najviac predvídateľné
Stávkovanie Glosár
dekalóg hráčov - Pravidlá stávkovanie pre začiatočníkov
Najväčšia výhra v stávkovej kancelárie
Algoritmus pokru v PHP
rozhovory s hviezdami pokeru
Poker oblečenie - globálne nakupovanie poker
no deposit poker new poker bankroll gratis bonus
poker bonus
Pravidlá známa hra Texas Holdem
Predajca v pokri a slepý
Pokrový slovník - Pokerový glosár
Hra o reálne peniaze
Freeroll - Voľné pokerové turnaje
História kartových hier WSOP
2-7 Draw Lowball hru a stratégiu
888 Poker Network recenziu
BOSS International Network recenziu
Entraction Poker Network recenziu
iPoker Network recenziu
Merge Gaming Network recenziu
Ongame Network recenziu
Najpredávanejšie poker knihy
Ako Twitter je Tvarovanie sveta pokru
Viktor Blom rozhovor - Isildur1 rozhovor
no deposit poker new poker bankroll gratis bonus
Texas hold em poker Texas Holdem Online
Spanish
Belarusian
Estonian
Bulgarian
Greek
Croatian
Finnish
Swedish
Portuguese
Taiwanese
Hungarian
Turkish
Ukrainian
Russian
Arabic
Poland
Japanese
Switzerland
Austria
Italian
Dutch
Belgium
Czech
Slovak
Brazil
German
French
Danish
Filipino
Georgian
Indonesian
Kannada
Latvian
Lithuanian
Romanian
Serbian
Slovenian
Vietnamese
Hebrew
Gratis startkapital Texas Holdem poker bonus
Texas Holdem Poker

Online Poker



Texas Hold em Poker


 
texas holdem poker Algoritmus pokru v PHP
 



Moja jediná expozícia pokeru už niekoľko hodín v posledných niekoľkých týždňoch čítanie prostredníctvom rôznych pravidiel hand rebríčku. Zdá sa, že problém rýchlo nájsť víťaza v hre je jednoduchý a pritom uniká. To znamená, že myšlienka na výrobu mapovanie medzi poker ruky a malú ohraničené entity, myslel som si, stojí za trochu vyšetrovania. Kód za tento článok je dôkazom koncepcie týchto suchých výpočtového postupu.

pozadia
Pôvodne fragment kódu bola vytvorená v reakcii na 4 hodinovom teste softvérový vývojár. To zahŕňalo Po zadaní:

realizovať

Knižnica (v programovacom jazyku podľa Vášho výberu), ktorý hodnotí, ktorí sú víťaz (y) medzi niekoľko 5 card poker rúk (http://en.wikipedia.org/wiki/List_of_poker_hands). Poznámka: pre tento projekt, ktorý "len treba implementovať podmnožinu pravidelných poker rúk:

prúd
Three of a Kind
Dvaja z druhu
high Card
vstup

Zbierka hráčov na showdowne: Meno hráča a 5 kariet (každý s uvedením počtu a oblek karty) - napr

Joe, 3H, 4H, 5H, 6H, 8H
Bôb, 3C, 3D, 3S, 8C, 10D
Výpad AC, 10 ° C, 5C, 2S, 2C
výkon

Zbierka víťazstvo hráča (viac ako jeden v prípade remízy) - napr

Joe
Uveďte, prosím všetky predpoklady, ktoré ste vykonali.

uskutočnenie
Od pôvodného splnenie úlohy, adresár Implementácia bola rozšírená, aby podporila úplný súbor štandardných pokerových rúk.

JavaScript bol zvolený pre svoju flexibilitu a jednoduchosť použitia.

predpoklady

Najvyššou hodnotou listu (podľa štandardného poker ruky systémom rebríčku, [^]) je výherné kombinácie. Tam je vždy aspoň jeden víťaz.
Počet rúk je kladné celé číslo náhodné.
Počet kariet v ruke je kladné náhodné celé číslo menšie ako 13. počet kariet v ruke nezáleží, ale to dáva zmysel, že by nemala prekročiť 13.
Karty v rukách pochádzajú z jednej paluby. Proces môže byť upravený tak, aby podporovať viac paluby, ale stratí časť svojej transparentnosti.
Každá karta je zastúpená 2-slová listu a, kde je prvé písmeno identifikuje poradie (tj je v sade [1..10, J, Q, K, A]) a 2. písmeno označuje sadu (tj sa nachádza v [H, H, C, s])
Vstupné obsahuje jeden rad, meno hráča a sada kariet, ktoré tvoria hráčovu ruku, kde subjekty sa oddeľujú čiarkami. Viac riadkov uviesť viac hráčov. Žiadne kontroly sú pridané k overeniu, že hráči sú jedinečné, majú rovnaký počet kariet, a používať jednu balíček kariet.
Meno hráča neobsahuje medzery; ak áno, nebudú prítomné vo výstupe.
algoritmus

Cieľom je priradiť hodnotu ruky kariet, ktoré odráža jeho sila / skóre v súlade s normou pokrových kombináciou systému a vyhnúť sa nutnosti triediť, porovnávať a vyhľadávanie jednotlivých ruky. Víťazom hry sa stáva hráč s najvyšším počtom bodov.

Na výpočet skóre, v pohľade každú ruku, ako dvojrozmerné matricu. Súčet cez stĺpy nám dáva dostatok informácií, aby toho odvodiť, či máme štvoricu, full house, trojica, dva páry, alebo jeden pár. Sumy cez riadky nám dáva dostatok informácií, aby toho odvodiť, či máme flush, rovný alebo straight flush. Posledný riadok tiež prezrádza vysokú kartu a kopy.

Napríklad, ako je tu 2H, 9D, 3S, 2C QD vyzerá ako v suchej matrice:

Skryť Kopírovanie kódu
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | D | | | | | | | | | | 1 | | | 1 | | | 0 |
 | H | | | 1 | | | | | | | | | | | | | 0 |
 | C | | | 1 | | | | | | | | | | | | | 0 | > - Col => sadu kariet (flush [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 | > - Row => kariet hodnosti (N svojho druhu, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   Cell ^ ---- => po sebe idúcich kariet (rovno, [0,5+])
V tomto prípade máme pár s 3 kopy (nie rovno, nie montáž).

Počítame zľava doprava ktorá zaručuje, že v nás vždy používať najlepšie dostupné karty pre skóre a že algoritmus funguje rovnako dobre pre 7-Card rúk, napríklad.

Tento prístup nás oslobodzuje od triedenia kariet, Porovnanie ruky alebo vykonávanie vyhľadávania. Používa pevnou pamäťou, ktoré sú viazané na riedke 15 x 4 matrix. Na jednej strane, že beží v konštantnom čase, O (1), pre vytvorenie súčtu po riadkoch a stĺpcoch. Ak hra obsahuje n ruke, bude trvať O (n) čas ich všetky skóre.

Trik je v priradenie výsledku, ktorý "jedinečný". Zoberme do úvahy nasledujúce vzorce:

Skryť Kopírovanie kódu
 Ručné Kategória | Big Endian | málo Endian
 ---------------- | ------------ + --------------------
 Straight Flush | s & f -> 8 | kickers
 štvorica | K4 -> 7 | K4
 Full House | p1 a d3 -> 6 | p1 + K3 * (10 ^ 2)
 flush | f -> 5 | kickers
 rovný | s -> 4 | kickers
 trojica | K3 -> 3 | k3
 Dva páry | P2 -> 2 | p1 + p2 * (10 ^ 2)
 Jeden pár | p1 -> 1 | p1
 High Card | -> 0 | kickers
kde:

kickers = súčet (r * (10 ^ (- 15 + i))), kde r je hodnosť i-teho karta s mohutnosťou 1, ktorý hrá
f = počet kariet rovnakej sady pokiaľ 5 alebo viac, 0 inak
s = počet kariet v poradí, pokiaľ 5 alebo viac, 0 inak
K4 = r * (10 ^ -4), kde r je najvyšší hodnosť karta s mohutnosťou 4
k3 = r * (10 ^ -4), kde r je najvyšší hodnosť karta s mohutnosťou 3
P2 = r * (10 ^ -4), kde r je druhý najvyšší hodnosť karta s mohutnosťou 2
p1 = r * (10 ^ -4), kde r je najvyšší hodnosť karta s mohutnosťou 2
potom skóre = (kategória || 0) * (kategória je veľký endian + little endian kategórie akcií) + kopy.

príklady:

Tu je návod, ako 2H, 9D, 3S, 2C QD (One Pair) skóre sa vypočíta:

Hide   Copy Code
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| D|  |  |  |  |  |  |  |  |  | 1|  |  | 1|  |  | 0|
| H|  |  | 1|  |  |  |  |  |  |  |  |  |  |  |  | 0|
| C|  |  | 1|  |  |  |  |  |  |  |  |  |  |  |  | 0|
| S|  |  |  | 1|  |  |  |  |  |  |  |  |  |  |  | 0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |  |  | 2| 1|  |  |  |  |  | 1|  |  | 1|  |  | 0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   
Hand Categories | Big Endian | Little Endian    | Result
----------------|------------+------------------|-------------
Straight Flush  |   s&f -> 8 | kickers          | 0 
Four Of A Kind  |    k4 -> 7 | k4               | 0
Full House      | p1&k3 -> 6 | p1 + k3*(10^2)   | 0
Flush           |     f -> 5 | kickers          | 3*(10^-14) + 9*(10^-13) + 12*(10^-12)
Straight        |     s -> 4 | kickers          | 0
Three Of A Kind |    k3 -> 3 | k3               | 0
Two Pair        |    p2 -> 2 | p2 + p1*(10^2)   | 0
One Pair        |    p1 -> 1 | p1               | 0.0002 = 2*(10^-4)
High Card       |       -> 0 | kickers          | 1.2930000000000001e-11   
   
score = 1.0002000000129 = (p1) * (1 + 0.0002) + 1.2930000000000001e-11   
Here is how 10S, 10C, 10H, 4D, 4C (Full House) score is computed:

Hide   Copy Code
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| D|  |  |  |  | 1|  |  |  |  |  |  |  |  |  |  | 0|
| H|  |  |  |  |  |  |  |  |  |  | 1|  |  |  |  | 0|
| C|  |  |  |  | 1|  |  |  |  |  | 1|  |  |  |  | 0|
| S|  |  |  |  |  |  |  |  |  |  | 1|  |  |  |  | 0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |  |  |  |  | 2|  |  |  |  |  | 3|  |  |  |  | 0|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

Ručné Kategória | Big Endian | Málo Endian | výsledok
---------------- | ------------ ------------------ + | - ------------
Straight Flush | s & f -> 8 | kickers | 0
štvorica | K4 -> 7 | K4 | 0
Full House | p1 a d3 -> 6 | p1 + K3 * (10 ^ 2) | 0,1004 = 0,0004 + 0,001 (10 ^ 2)
flush | f -> 5 | kickers | 0
rovný | s -> 4 | kickers | 0
trojica | K3 -> 3 | k3 | 0001 = 10 (10 ^ -4)
Dva páry | P2 -> 2 | p1 + p2 * (10 ^ 2) | 0
Jeden pár | p1 -> 1 | p1 | 4 = 0,0004 * (10 ^ -4)
High Card | -> 0 | kickers | 0

skóre = 6,1004 = (p1 a K3) * (6 + 0,1004) + 0
Všimnite si, že je možné obnoviť ruku z skóre.

výkon

V Chrome (10.0.648.205, AMD Turion, 1,6 GHz, 512 KB L2, 2 GB DDR2), hodnotiace jednou rukou zoberie ~ 1ms.

Skryť Kopírovanie kódu
10 -> ~ 1 ms
100 -> ~ 6 ms
1000 -> ~ 60 ms
10000 -> ~ 600 ms
100000 -> ~ 6000 ms
Je to beh sami, otvoriť priložený súbor HTML v prehliadači s povolenou funkciou JavaScript.

Je pravdepodobné, že rovnaký vykonávanie adresár v inom jazyku bude lepšie výsledky.

výzvy

Pochopenie a overovanie rôznych pokerový list rebríčka pravidlá
Zaistenie min / max hodnoty pre jednu kategóriu a bez presahu -> právomoci 10, big / little endian
Výpočet kopy vs vysoké karty -> sily 10, mohutnosť
Uplatnenie eso ako 1 alebo 14, v rovinkách -> ručné hodnota resetovanie
Alternatívne prístupy (porov Pozri tiež)

Použitie základne 13 Výpočty
Použitie prvočísel, kde je produkt dvoch prvočísel je "jedinečný" číslo
časť 2

Pridať Záver
Vymyslieť spôsob, ako začleniť pravdepodobnosti
Realizovať v inom jazyku (Haskell?) Ak chcete zistiť, či celková výkonnosť je lepšia
kód

Hide   Shrink    Copy Code
var evalHand = function(input){
    if (!input) return;

    input = input.replace(/\s+/g, '').replace(/,[Jj]/g, ',11').replace
    (/,[Qq]/g, ',12').replace(/,[Kk]/g, ',13').replace(/,
    [Aa]/g, ',14').toUpperCase().split(',');

    var hand = {D: [], H: [], C: [], S:[]};
    for (var i = 1, len = input.length; i < len; i++)
    {
        input[i] && (hand[input[i].slice(input[i].length - 1)]
    [input[i].slice(0, input[i].length - 1)] = 1);
    }

    var card = function(suite, rank){return hand[suite][rank] || 0};
    var cards = function(rank){ return card('D', rank) + card('H', rank) +
    card('C', rank) + card('S', rank); };
    var kickers = function(idx){ // http://en.wikipedia.org/wiki/Kicker_(poker)       
        idx = idx || -15;
        var notplayed = Math.max(input.length - 1/*player input*/ - 5, 0);
        return function(all, cardinality, rank) {
            return (all || 0) + (((cardinality == 1) && (notplayed-- <= 0)) ?
        rank * Math.pow(10, ++idx) : 0);
        };
    }();
  
    var tag = function(a, b, always) {a = a || 0; b = Math.min(b || 0, 1);
    return (b || always) ? a + b : 0};
    var reset = function(a) { return (a < 5) ? 0 : a};

    var cardsofrank = [];
    var hc = 0;         // high card
    var k4 = 0;         // four of a kind
    var k3 = 0;         // three of a kind
    var p2 = 0;         // two pair / two one pairs
    var p1 = 0;         // one pair / two of a kind
    var k = 0;          // kickers
    var sd = cards(14); // straight discriminant: count A as 1 or 14
    for (var i = 2; i < 15; i++)
    {
        cardsofrank[i] = cards(i);
        hc = (cardsofrank[i]) ? i * Math.pow(10, -4) : hc;
        k4 = (cardsofrank[i] === 4) ? hc : k4;
        k3 = (cardsofrank[i] === 3) ? hc : k3;
        p2 = (cardsofrank[i] === 2) ? p1 : p2;
        p1 = (cardsofrank[i] === 2) ? hc : p1;
        k = kickers(k, cardsofrank[i], i);
        sd = tag(sd, cardsofrank[i], sd >= 5);
    };
    var s = reset(sd); // straight

    if (s && cards(14) && !cards(13))
    { k = k - 14 * Math.pow(10, sd); } // adjust for A as 1 or 14

    var cardsofsuite = {D: 0, H: 0, C: 0, S: 0};
    for (var i = 2; i < 15; i++)
    {
        cardsofsuite['D'] = tag(cardsofsuite['D'], card('D', i), true);
        cardsofsuite['H'] = tag(cardsofsuite['H'], card('H', i), true);
        cardsofsuite['C'] = tag(cardsofsuite['C'], card('C', i), true);
        cardsofsuite['S'] = tag(cardsofsuite['S'], card('S', i), true);
    }
    var f = reset(cardsofsuite['D']) + reset(cardsofsuite['H']) +
    reset(cardsofsuite['C']) + reset(cardsofsuite['S']);  // flush

    var score = function(cond, bigendian, littleendian)
    { return (cond ? 1 : 0) * (bigendian + littleendian); };

    return {
        player: input[0], 
        score: (score(s && f, 8, k)                              // straightflush
                || score(k4, 7, k4)                              // fourofakind
                || score(p1 && k3, 6, p1 + k3 * Math.pow(10, 2)) // fullhouse
                || score(f, 5, k)                                // flush
                || score(s, 4, k)                                // straight
                || score(k3, 3, k3)                              // threeofakind
                || score(p2, 2, p2 + p1 * Math.pow(10, 2))       // twopair
                || score(p1, 1, p1))                             // onepair
            + score(hc, 0, k)                                    // highcard - tie breaker
    };
};


 
 
Template by Poker Template & USA Online Casino