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
cântece despre poker și jocuri de noroc
ABC Poker
Sisteme de joc ruleta
Cum să câștige la ruletă
Sisteme de joc la ruletă - Martingale
Sisteme de joc la ruletă - Shaun
Străzi Sistemul de ruletă
sistema ruleta fibonacci
Sisteme de Ruleta - Parlay sistem
Sistemul de ruletă - System 63
Sisteme de Ruleta - Sistem de Labouchere
Sisteme de Ruleta - D'Alembert Sistem
psihologia jucător de poker și cartofor
bancuri și glume poker
jocuri de cărți
Bonus de înregistrare
downswing poker
Poker Forum - Cele mai bune comentarii din lume
Poker ca o lucrare - o sursă suplimentară de venit
Poker bonus fără depozit
Castiga bani din poker - bani de poker gratuit
Că o sport disciplină este cel mai previzibil
Glosar de pariuri
jucator dekalog - reguli de pariuri pentru începători
Cea mai mare victorie la casa de pariuri
joc de poker algoritm în PHP
interviuri cu vedetele de poker
Îmbrăcăminte de poker - poker cumpărături la nivel mondial
no deposit poker new poker bankroll gratis bonus
Bonus fără depozit
Regulile jocului de Texas Holdem
Dealerul în poker și orb
Glosar de termeni de poker
Redarea pentru bani reali (poker pe internet)
Freeroll - Poker Turnee gratuite
Istoria a World Series of Poker
2-7 Lowball Draw Reguli
Revizuire 888poker Rețea
Revizuire BOSS Rețeaua Internațională de Poker
Revizuire Entraction Poker de rețea
Revizuire rețeaua iPoker
Merge revizuire Gaming Network
Revizuire Ongame Network
Cele mai bune cărți de vânzare Poker
Cum Twitter este modelarea lumii de Poker
Viktor Blom interviu - interviu Isildur1
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 joc de poker algoritm în PHP
 



Expunerea mea numai la jocul de poker a fost câteva ore în ultimele două săptămâni de lectură, prin diferite reguli de rang mână. Se pare că provocarea de a găsi rapid câștigătorul într-un joc este simplu și încă evaziv. Astfel, ideea de a produce o mapare între o mână de poker și o entitate mică mărginit, m-am gândit, este în valoare de unele investigații. Codul din spatele acestui articol este o dovada a conceptului de procedură de calcul uscat aceste.

fundal
Inițial, fragmentul de cod a fost creat ca răspuns la un 4 oră dezvoltator de software de testare. Cuprindea Ca urmare a sarcinii:

aplica

O bibliotecă (în limbajul de programare la alegere), care evaluează cine sunt câștigătorul (e) între mai multe mâini de 5 cărți de poker (http://en.wikipedia.org/wiki/List_of_poker_hands). Notă pentru acest proiect că "trebuie doar să pună în aplicare un subset al mâinilor regulate de poker:

culoare
Trei de un fel
Două cărți de același fel
Carte mare
intrare

Colectia de jucători în showdown: Nume jucător și 5 carduri (fiecare specificând numărul și costumul cardului) - E.G.,

Joe, 3H, 4H, 5H, 6H, 8H
Bob, 3C, 3D, 3S, 8C, 10D
AC, Sally, 10C, 5C, 2S, 2C
producție

Colectia de câștigătoare jucatori (mai mult de un caz de egalitate) - E.G.,

Joe
Vă rugăm să specificați orice presupunerile pe care le-ați făcut.

Punerea în aplicare
De la finalizarea inițială a sarcinii, directorul de implementare a fost extins pentru a sprijini setul complet de mâini standard de poker.

JavaScript a fost ales pentru flexibilitatea și ușurința de utilizare.

ipotezele

Mâna de rang superior (conform standard de sistem de clasificare mână de poker, [^]) este mâna câștigătoare. Există întotdeauna cel puțin un câștigător.
Numărul de mâini este un număr întreg aleator pozitiv.
Numărul de cărți într-o mână este un număr întreg aleator pozitiv mai mic de 13. Numărul de cărți într-o mână, nu contează cu adevărat, dar este logic că nu va depăși 13.
Carduri într-o mână provin de pe o punte. Procesul poate fi modificat pentru a sprijini mai multe punți, dar va pierde o parte din transparența.
Fiecare card este Reprezentat de un cuvânt de 2 litere, în cazul în care prima literă identifică rangul (de exemplu, este în setul [1..10, J, Q, K, A]) și două literă identifică suita (de exemplu, este setat în [H, H, C, S])
De intrare conține, pe rând, numele jucătorului și setul de cărți care formează mâna jucătorului în cazul în care entitățile sunt separate prin virgulă. rânduri multiple Indicat mai mulți jucători. Nu se adaugă controale pentru a verifica dacă jucătorii sunt unice, au același număr de cărți, și de a folosi un singur pachet de cărți.
Numele de jucător nu conține spații; în cazul în care o face, ei nu vor fi prezente în ieșire.
algoritmul

Obiectivul este de a atribui o valoare unei perechi de cărți, care reflectă rezistența / scorul său în conformitate cu sistemul standard, Topul mână de poker și pentru a evita necesitatea de a sorta, compara, și căutarea pe mâini individuale. Câștigătorul unui joc este jucatorul cu cel mai mare scor.

Pentru a putea calcula scorul, în vizualizarea fiecare mână, ca o matrice cu două dimensiuni. Suma peste coloanele ne oferă suficiente informații pentru a deduce dacă avem patru de un fel, full house, trei de un fel, două perechi, sau o pereche. Sumele peste rândurile ne oferă suficiente informații pentru a deduce dacă avem o culoare la culoare, drepte sau drepte. Ultimul rând, de asemenea, dă departe cartea mare și lansatori.

De exemplu, aici este cum 2H, 9D, 3S, 2C QD arată ca într-o matrice uscată:

Codul de copiere a ascunde
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 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 => suită de cărți (culoare, [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 | > - Row => Carte de rang (N de un fel, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   Celule ^ ---- => cărți în ordine (drepte, [0,5+])
În acest caz, avem o pereche cu 3 lansatori (fara drept, fara culoare).
Noi calcula de la stânga la dreapta, care garantează că în noi folosesc întotdeauna cele mai bune cărți disponibile pentru scorul și că algoritmul funcționează la fel de bine pentru mâini 7-card, de exemplu.

Această abordare ne eliberează de sortare cărți, Comparând mâinile sau efectuarea de căutări. Acesta folosește memoria fixă ​​legată de rare matrice 15 x 4. Pentru o singură mână, se execută în timp constant, O (1), necesară pentru a rezuma peste rândurile și coloanele. În cazul în care un joc conține n mâini, se va lua O (n) timp să le înscrie.

Trucul este în atribuirea unui scor care este "unic". Luați în considerare următoarele formule:

Codul de copiere a ascunde
 Categorii | utilaje Endian mare | little endian
 ---------------- | ------------ + --------------------
 Straight Flush | s & f -> 8 | lansatori
 Patru de un fel | K4 -> 7 | K4
 Full House | p1 & d3 -> 6 | p1 + k3 * (10 ^ 2)
 spălare | f -> 5 | lansatori
 drepte | s -> 4 | lansatori
 Trei de un fel | k3 -> 3 | k3
 Două perechi | p2 -> 2 | p1 + p2 * (10 ^ 2)
 O pereche | p1 -> 1 | p1
 Carte mare | -> 0 | lansatori
în cazul în care:

lansatori = suma (r * (10 ^ (- 15 + i))), unde r este rangul de carte i-lea cu decardinalitate 1 care joacă
f = numărul de cărți de aceeași suită în cazul în 5 sau mai multe, 0 altfel
s = numărul de cărți în ordine, dacă 5 sau mai multe, în caz contrar 0
K4 = r * (10 ^ -4), unde r este cel mai înalt rang al unui card cu cardinalitate 4
k3 = r * (10 ^ -4), unde r este cel mai înalt rang al unui card cu cardinalitate 3
p2 = r * (10 ^ -4), unde r este cel de-al doilea cel mai înalt rang al unui card cu cardinalitate 2
p1 = r * (10 ^ -4), unde r este cel mai înalt rang al unui card cu cardinalitate 2
atunci scorul = (categoria || 0) * (endian categoria Big + categoria lui endian mic) + lansatori.

exemple:

Iată cum 2H, 9D, 3S, 2C QD (o pereche), scor este calculat:

Codul de copiere a ascunde
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 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 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
  
Categorii | utilaje Endian mare | Little endian | rezultat
---------------- | ------------ ------------------ + | - ------------
Straight Flush | s & f -> 8 | lansatori | 0
Patru de un fel | K4 -> 7 | K4 | 0
Full House | p1 & d3 -> 6 | p1 + k3 * (10 ^ 2) | 0
spălare | f -> 5 | lansatori | 3 * (10 ^ -14) + 9 * (10 ^ -13) + 12 * (10 ^ -12)
drepte | s -> 4 | lansatori | 0
Trei de un fel | k3 -> 3 | k3 | 0
Două perechi | p2 -> 2 | p1 + p2 * (10 ^ 2) | 0
O pereche | p1 -> 1 | p1 | 0,0002 = 2 * (10 ^ -4)
Carte mare | -> 0 | lansatori | 1.2930000000000001e-11
  
scor = 1.0002000000129 = (p1) * (1 + 0,0002) + 1.2930000000000001e-11
Iată cum 10S, 10C, 10H, 4D, 4C scor (Full House) este calculat:

Codul de copiere a ascunde
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  | 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|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

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.1004 = 0.0004 + 0.001(10^2)
Flush           |     f -> 5 | kickers          | 0
Straight        |     s -> 4 | kickers          | 0
Three Of A Kind |    k3 -> 3 | k3               | 0.001 = 10(10^-4)
Two Pair        |    p2 -> 2 | p2 + p1*(10^2)   | 0
One Pair        |    p1 -> 1 | p1               | 0.0004 = 4*(10^-4)
High Card       |       -> 0 | kickers          | 0   

score = 6.1004 = (p1&k3) * (6 + 0.1004) + 0   
Note that it is possible to restore the hand from the score.

Performance

In Chrome (10.0.648.205, AMD Turion, 1.6GHz, 512KB L2, 2GB DDR2), a single hand evaluation takes ~1ms.

Hide   Copy Code
10 ->    ~1 ms
100 ->    ~6 ms
1000 ->   ~60 ms
10000 ->  ~600 ms
100000 -> ~6000 ms   
Este a alerga it yourself, deschide fișierul HTML atașat într-un browser cu JavaScript activat.

Este probabil ca același director de punere în aplicare într-o altă limbă va da rezultate mai bune.

provocări

Înțelegerea și verificarea mână de poker diverse reguli clasament
Min asigurând / valoarea maximă pe categorii, fără suprapunere -> puteri de 10, little endian mare /
Calculul de lansatori vs carte mare -> puteri de 10, decardinalitate
Aplicând Ace ca 1 sau 14, în linii drepte -> valoare de resetare manuală
Abordări alternative (vezi se vedea de asemenea)

Utilizarea de bază 13 Calcule
Utilizarea numerelor prime care produsul a două numere prime este un număr "unic"
partea 2

Se adaugă o concluzie
Vino cu un mod de a încorpora probabilități
Punerea în aplicare într-o altă limbă (Haskell?) Pentru a vedea dacă performanța generală este mai bună
cod

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