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
Hawana (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
Sange om poker og gambling
ABC Poker
Roulette systemer
Hvordan at vinde på roulette
Roulette Systemer Martingale
Systemer Shaun
Gade systemer roulette
Fibonacci bettingsystemer - ratio bordet
Systemer for at spille - roulette system Parlay
Systemer til roulette - system 63
Systemer til roulette - Labouchere system
Systemer D'Alembert
Pokerspiller og gambler psykologi
Poker vittigheder
Kortspil
Bonus for registreringer uden indskud
Downswing nedtur poker
Poker forum anmeldelser af de bedste i verden
Poker som arbejdet en ekstra indtaegtskilde
Ojeblikkelig bonus uden indskud
Gratis poker penge uden indskud
Sport disciplin som er den mest forudsigelige
Betting ordliste termer
Spiller dekalogen reglerne vaeddemal for begyndere
Storste sejr ved bookmaker
Algoritme spille poker i php
Interviews med stjernerne i poker
Poker toj globale poker butikker
no deposit poker new poker bankroll gratis bonus
Bonus uden indskud
Spil Texas Holdem - Flop - Drej - Flod
Forhandleren i poker og blinde
Pokerordliste - Ordliste over poker udtryk
Spiller for rigtige penge (poker på internettet)
Freeroll - Gratis Poker Turneringer
Historien af World Series of Poker (WSOP)
Regler for 2-7 Lowball Draw Poker
888Poker Network - sider indenfor netværket
BOSS International Poker Network - sider indenfor netværket
Entraction Poker Network - sider indenfor netværket
iPoker Netværket - sider indenfor netværket
Merge Gaming Network - sider indenfor netværket
Ongame Network - sider indenfor netværket
Bedst Sælgende Poker Bøger
Hvordan Twitter Udformning pokerverdenen
Viktor Blom interview - Isildur1 interview
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 Algoritme spille poker i PHP
 



Min eneste udsættelse for pokerspillet har været et par timer i de sidste par uger læsning gennem de forskellige hånd ranking regler. Det ser ud til, at den udfordring hurtigt at finde vinderen i et spil er enkel og alligevel undvigende. DERFOR, ideen om at producere en mapping mellem en poker hånd og en lille afgrænset enhed, tænkte jeg, er værd nogle undersøgelse. Koden bag denne artikel er en proof of concept af disse tørre beregningsmæssige procedure.

Baggrund
Oprindeligt blev kodestykke oprettet som reaktion på en 4 timers test software udvikler. Den bestod følgende opgave:

Implement

Et bibliotek (i programmeringssproget eget valg), der vurderer Hvilke er vinderen (e) mellem flere 5 card poker hænder (http://en.wikipedia.org/wiki/List_of_poker_hands). Bemærk for dette projekt, at du nødt til at gennemføre kun en delmængde af de regelmæssige poker hænder:

Flush
Tre af en slags
To af en slags
High Card
Input

Indsamling af spillere i opgøret: Spiller Navn og 5 kort (hver med angivelse af antallet og kulør på kort) - f.eks

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

Indsamling af vindende spillere (mere end én i tilfælde af stemmelighed) - f.eks

Joe
Angiv venligst eventuelle Forudsætninger, du har foretaget.

Implementering
Da den oprindelige gennemførelsen af ​​opgaven, gennemførelse bibliotek, du udvidet denne støtte det fulde sæt af standard poker hænder.

JavaScript blev valgt for sin fleksibilitet og brugervenlighed.

Forudsætninger

Den højest rangerende hånd (som pr standard poker hånd ranglister system [^]) er den vindende hånd. Der er altid mindst en vinder.
Antallet af hænder er et positivt tilfældigt heltal.
Antallet af kort i en hånd er et positivt tilfældigt heltal mindre end 13. Det antal kort i en hånd er faktisk ligegyldigt, men det giver mening, at det ikke ville Exceed 13.
Kortene i en hånd kommer fra ét dæk. Fremgangsmåden kan modificeres som understøtter flere dæk, men den vil miste noget af sin gennemsigtighed.
Hvert kort er repræsenteret ved en 2-brev ord, hvor 1. bogstav identificerer rang (dvs. er i sættet [1..10, J, Q, K, A]) og den 2. bogstav identificerer pakken (dvs. er i sættet [H, H, C, S])
Indgangen indeholder, pr række, navnet på spilleren og sæt kort, der danner spillerens hånd hvor enheder er kommasepareret. Flere rækker Indiceret flere spillere. Ingen kontrol tilsættes for at verificere, at spillerne er unikke, har det samme antal kort, og de bruger spil kort.
Afspilleren navn ikke indeholde mellemrum; hvis den gør, vil de ikke være til stede i outputtet.
Algoritme

Målet er, at tildele en værdi til en hånd med kort, der afspejler dets styrke / scores Ifølge standard poker hånd ranglister, og undgå behovet for at sortere, sammenligne og opslag enkelte hænder. Vinderen af ​​et spil er spilleren med den højeste score.

For at beregne score i betragtning hver hånd som en todimensional matrix. Totalerne på tværs af søjlerne giver os nok oplysninger, udlede, om vi har fire ens, fuldt hus, tre ens, to par, eller et par. De beløb på tværs af rækkerne giver os nok information, som vi har udlede, om flush, straight eller en straight flush. Den sidste række giver også væk høje kort og kickers.

For eksempel, her er hvordan 2H, 9D, 3S, 2C, QD ser ud i et tørt og matrix:

Skjul Kopier koden
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 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 => kort af suiter (flush, [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |> - række => kort af rang (N af en slags, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   ^ ---- Cell => kort i rækkefølge (lige, [0,5+])
I dette tilfælde har vi et par med 3 kickers (ingen straight, ingen flush).

Vi beregner fra venstre til højre, som sikrer os, at vi altid anvende den bedste tilgængelige kort til scoren og At algoritmen virker lige så godt for 7-korts hænder, for eksempel.

Denne tilgang befrier os fra sortering kort, Sammenligning hænder, eller udfører opslag. Det bruger fast hukommelse bundet af sparse 15 x 4 matrix. For en enkelt hånd, det kører i konstant tid, O (1), er nødvendig for at summere over rækkerne og kolonnerne. Hvis et spil indeholder n hænder, vil det tage O (n) tid til at score dem alle.

Tricket er at tildele en score Det er »unikt«. Overvej følgende formler:

Skjul Kopier koden
 Hand Kategorier | Big Endian | Lille Endian
 ---------------- | ------------ + --------------------
 Straight Flush | p & f -> 8 | kickers
 Fire ens | d4 -> 7 | d4
 Full House | p1 & K3 -> 6 | p1 + k 3 * (10 ^ 2)
 Flush | f -> 5 | kickers
 Straight | p -> 4 | kickers
 Tre ens | K3 -> 3 | k3
 To par | p2 -> 2 | p2 + p1 * (10 ^ 2)
 Et par | p1 -> 1 | p1
 High Card | -> 0 | kickers
hvor:

kickers = sum (r * (10 ^ (- 15 + i))), hvor r er rang af den i'te kort med kardinaliteten af ​​1 Hvilken spiller
f = antal kort i samme suite, hvis 5 eller flere, 0 ellers
s = antallet af kort i rækkefølge, hvis 5 eller mere, ellers 0
d4 = r * (10 ^ -4), hvor r er den højeste rang af et kort med kardinalitet 4
K3 = r * (10 ^ -4), hvor r er den højeste rang af et kort med kardinalitet 3
p2 = r * (10 ^ -4), hvor r er den næsthøjeste rang af et kort med kardinalitet 2
p1 = r * (10 ^ -4), hvor r er den højeste rang af et kort med kardinalitet 2
Stillingen = (kategori || 0) * (kategori store endian + kategori lille endian) + kickers.

Eksempler:

Her er hvordan 2H, 9D, 3S, 2C QD (One Pair) score beregnes:

Skjul Kopier koden
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 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 Kategorier | Big Endian | Lille Endian | Resultat
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kickers | 0
Fire ens | d4 -> 7 | d4 | 0
Full House | p1 & K3 -> 6 | p1 + k 3 * (10 ^ 2) | 0
Flush | f -> 5 | kickers | 3 * (10 ^ -14) + 9 * (10 ^ -13) + 12 * (10 ^ -12)
Straight | p -> 4 | kickers | 0
Tre ens | K3 -> 3 | k3 | 0
To par | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
Et par | 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
Her er hvordan 10S, 10C, 10H, 4D, 4C (Full House) score beregnes:

Skjul Kopier koden
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 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 Kategorier | Big Endian | Lille Endian | Resultat
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kickers | 0
Fire ens | d4 -> 7 | d4 | 0
Full House | p1 & K3 -> 6 | p1 + k 3 * (10 ^ 2) | 0,1004 = 0,0004 + 0,001 (10 ^ 2)
Flush | f -> 5 | kickers | 0
Straight | p -> 4 | kickers | 0
Tre ens | K3 -> 3 | d3 | 0001 = 10 (10 ^ -4)
To par | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
Et par | p1 -> 1 | p1 | 0,0004 = 4 * (10 ^ -4)
High Card | -> 0 | kickers | 0

score = 6,1004 = (p1 & k3) * (6 + 0,1004) + 0
Bemærk at det er muligt, at gendanne hånd fra resultatet.

Ydeevne

I Chrome (10.0.648.205, AMD Turion, 1.6GHz, 512KB L2, 2GB DDR2), en enkelt evaluering hånd tager ~ 1 ms.

Skjul Kopier koden
10 -> ~ 1 ms
100 -> ~ 6 ms
1000 -> ~ 60 ms
10000 -> ~ 600 ms
100000 -> ~ 6000 ms
Det køres det selv, skal du åbne den vedhæftede HTML-fil i en browser med JavaScript aktiveret.

Det er sandsynligt, at den samme implementering mappe på et andet sprog, vil give bedre resultater.

Udfordringer

Forståelse og kontrollere de forskellige poker hånd ranking regler
Sikring min / max værdi pr kategori uden overlap -> beføjelser 10, store / lille endian
Beregning af kickers vs høje kort -> beføjelser 10, kardinalitet
Anvendelse af Ace som 1 eller 14 i straights -> manuel reset værdi
Alternative Approaches (jf Se også)

Brug af basen 13 Beregninger
Anvendelse af primtal, hvor produktet af to primtal er et "unikt" nummer
Del 2

Tilføj Konklusion
Kom op med en måde at indarbejde sandsynligheder
Gennemføre i et andet sprog (Haskell?) For at se, om de samlede resultater er bedre
Kode

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