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
Písně o pokeru a hazardních her
ABC Poker
Nejlepší Ruleta Systémy
Jak vyhrát v ruletě
Martingale ruletní systém
Shaunův systém
Ruletní systém 6 streets
Fibonacci systém - poměr tabulka
Systémy pro rulety - Parlay systém
Systémy pro rulety - Systém 63
Systémy pro rulety - Labouchere systém
D'Alembert systém
Pokerový hráč a hráč psychologie
Nejlepší vtipy o pokeru
Karetní hry
Bonus za registraci
Jak se vypořádat s Downswing
Poker Fórum - recenze z nejlepších na světě
Poker jako práce - doplňkový zdroj příjmů
Bonus není nutný žádný vklad
Poker peníze zdarma - Bonus bez rizika
Disciplína, která je nejvíce předvídatelné
Sázkový slovník
Desatero hráče - pravidla sázení pro začátečníky
Největší výhra u bookmakera
Algoritmus poker v PHP
Rozhovory s hvězdami pokeru
Poker oblečení - globální poker obchody
no deposit poker new poker bankroll gratis bonus
poker bonus
Pravidla Poker Texas Holdem - Flop - Turn - River
Prodej pokerových stolů
Pokerový slovník - terminologie pokerových výrazů
Hrát za reálné peníze (poker na internetu)
Freeroll - Zdarma Texas Holdem Poker
Historie World Series of Poker série
Pravidla 2-7 Lowball Draw - Hrajte lowball hry
888Poker Network - strana patří na síť
BOSS International Network - strana patří na síť
Entraction Poker Network - strana patří na síť
iPoker Network - strana patří na síť
Merge Gaming - místa v rámci sítě - strana patří na síť
Ongame Network - místa v rámci sítě - strana patří na síť
Nejprodávanější Poker Knihy
Jak Twitter je Tvarování světa pokeru
Viktor Blom rozhovor - Isildur1 rozhovor
Bonus Bez Vkladu 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 poker v PHP
 



Moje jediná expozice pokeru byl několik hodin v posledních pár týdnů, čtení prostřednictvím různých pravidel pro ruční žebříčku. Zdá se, že výzva rychle najít vítěze ve hře je jednoduchý a přesto nepolapitelný. To znamená, že myšlenka produkovat mapování mezi pokerovou ruku a malé ohraničené entity, jsem si myslel, stojí za to trochu vyšetřování. Kód za tohoto článku je důkazem konceptu těchto suchého výpočetního postupu.

Pozadí
Původně fragment kódu byla vytvořena v reakci na 4 hodiny zkušební vývojáře softwaru. To zahrnovalo následující úlohu:

Realizovat

Knihovna (v programovacím jazyce dle Vašeho výběru), který hodnotí, které jsou vítěz (y) mezi několik 5 card poker hands (http://en.wikipedia.org/wiki/List_of_poker_hands). Poznámka pro tento projekt, který "je třeba zavést pouze podmnožinu pravidelných pokerových rukou:

Proud
Three of a Kind
Dva of a Kind
High Card
Vstup

Sbírka hráčů na showdownu: jméno hráče a 5 karet (každý s uvedením počtu a oblek karty) - např

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

Sbírka vítězství hráče (více než jeden v případě remízy) - např

Joe
Uveďte prosím veškeré předpoklady, které jste provedli.

Uskutečnění
Od původního splnění úkolu, adresář implementace jste rozšířil tuto podporu úplnou sadu standardních poker rukou.

JavaScript byl vybrán pro svou flexibilitu a jednoduchost použití.

Předpoklady

Nejvyšší hodnotou listu (podle standardu pokerových kombinací systému, [^]) je vítězná. Tam je vždy minimálně jeden vítěz.
Počet rukou je kladné celé číslo náhodný.
Počet karet v ruce, je kladné náhodné celé číslo menší než 13. Počet karet v ruce nezáleží, ale to dává smysl, že by neměla překročit 13.
Karty v rukou pocházejí z jedné paluby. Tento proces může být modifikován, že podporují více balíčků, ale ztratí část své transparentnosti.
Každá karta je reprezentován 2-slova dopisu, kde 1. písmeno identifikuje hodnost (tedy je v sadě [1..10, J, Q, K, A]) a 2. písmeno určuje sadu (tj je v souboru [H, H, C, S])
Vstupní obsahuje, na řádek, jméno hráče a sada karet, které tvoří ruku hráče, kde subjekty jsou odděleny čárkami. Více řádků Uvedeno více hráčů. Žádné kontroly jsou přidány k ověření, že hráči jsou jedinečné, mají stejný počet karet, a oni používají balíček karet.
Název Přehrávač neobsahuje mezery; pokud ano, nebudou přítomny ve výstupu.
Algoritmus

Cílem je, aby přiřadit hodnotu do ruky karet, který odráží jeho síla / skóre Podle standardního pokerových kombinací systému a vyhnout se, že je třeba třídit, porovnávat, a vyhledávání jednotlivých ruce. Vítězem hry je hráč s nejvyšším skóre.

Aby vypočítat skóre, s ohledem každou ruku, jako dvourozměrné matrici. Celkové částky přes sloupcích nám dává dostatek informací, to odvodit, zda máme čtyři druhu, full house, trojice, dva páry, nebo jeden pár. Částky přes řádky nám dává dostatek informací, které máme odvodit, zda flush, rovný, nebo straight flush. Poslední řada také dává pryč vysokou kartu a kopy.

Například, tady je návod, jak 2H, 9D, 3S, 2C, QD vypadá jako v suchém a matice:

Skrýt Kopírovat kód
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | 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 => karty apartmá (flush, [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |> - řada => karty hodnosti (N svého druhu, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   ^ ---- Buněčné => karet v pořadí (rovný, [0,5+])
V tomto případě, máme pár s 3 kopy (ne rovně, ne montáž).

My vypočítat z levého na pravé Což nám zaručuje, že jsme vždy použít nejlepší dostupné karty pro skóre, a že algoritmus funguje stejně dobře pro ruce 7 karet, například.

Tento přístup nás osvobozuje od třídění karet, Porovnání ruce, nebo provádění vyhledávání. Používá pevnou paměť vázána řídké 15 x 4 matrix. V případě jedné straně, to běží v konstantním čase, O (1), pro vytvoření součtu po řádcích a sloupcích. Pokud hra obsahuje n ruce, bude to trvat O (n) čas, aby je všechny skóre.

Trik je v přiřazení skóre, které je "jedinečný". Vezměme v úvahu následující vzorce:

Skrýt Kopírovat kód
 Ruční Kategorie | Big Endian | Malý Endian
 ---------------- | ------------ + --------------------
 Straight Flush | p & F -> 8 | Kickers
 Čtveřice | d4 -> 7 | d4
 Full House | P1 a K3 -> 6 | p1 + k 3 * (10 ^ 2)
 Flush | f -> 5 | Kickers
 Rovné | p -> 4 | Kickers
 Three of a Kind | K3 -> 3 | k3
 Two Pair | P2 -> 2 | P2 + p1 * (10 ^ 2)
 Jeden pár | P1 -> 1 | p1
 Vysoká karta | -> 0 | Kickers
kde:

Kickers = součet (r * (10 ^ (- 15 + i))), kde r je hodnost i-tého karta s mohutností 1, která hraje
f = počet karet stejné sady pokud 5 nebo více, 0 jinak
s = počet karet v pořadí, pokud 5 nebo více, 0 jinak
d4 = r * (10 ^ -4), kde r je nejvyšší hodnost karty s mohutnosti 4
K3 = r * (10 ^ -4), kde r je nejvyšší hodnost karty s mohutnosti 3
P2 = r * (10 ^ -4), kde r je druhý nejvyšší hodnost karty s mohutnosti 2
p1 = r * (10 ^ -4), kde r je nejvyšší hodnost karty s mohutnosti 2
pak skóre = (kategorie || 0) * (kategorie je velký endian, kategorie a je trochu endian) + kopy.

Příklady:

Zde je návod, jak 2H, 9D, 3S, 2C QD (One Pair), skóre se vypočítá:

Skrýt Kopírovat kód
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 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 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
  
Ruční Kategorie | Big Endian | Malý Endian | Výsledek
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & F -> 8 | Kickers | 0
Čtveřice | d4 -> 7 | d4 | 0
Full House | P1 a 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
Three of a Kind | K3 -> 3 | k3 | 0
Two Pair | P2 -> 2 | P2 + p1 * (10 ^ 2) | 0
Jeden pár | P1 -> 1 | p1 | 0,0002 = 2 * (10 ^ -4)
High Card | -> 0 | shazovače | 1.2930000000000001e-11
  
skóre = 1,0002000000129 = (p1) * (1 + 0,0002) + 1.2930000000000001e-11
Zde je návod, jak 10S, 10C, 10H, 4D, 4C (Full House), skóre se vypočítá:

Skrýt Kopírovat kód
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
| | 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í Kategorie | Big Endian | Malý Endian | Výsledek
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & F -> 8 | Kickers | 0
Čtveřice | d4 -> 7 | d4 | 0
Full House | P1 a 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
Three of a Kind | K3 -> 3 | d3 | 0001 = 10 (10 ^ -4)
Two Pair | P2 -> 2 | P2 + p1 * (10 ^ 2) | 0
Jeden pár | P1 -> 1 | p1 | 0,0004 = 4 * (10 ^ -4)
High Card | -> 0 | Kickers | 0

skóre = 6,1004 = (p1 a K3) * (6 + 0,1004) + 0
Všimněte si, že je možné, že obnovit ruku z skóre.

Výkon

V Chrome 10.0.648.205 (AMD Turion, 1,6 GHz, 512 kb L2, 2 GB DDR2), jediné hodnotící ruka trvá ~ 1ms.

Skrýt Kopírovat kód
10 -> ~ 1 ms
100 -> ~ 6 ms
1000 -> ~ 60 ms
10.000 -> ~ 600 ms
100.000 -> ~ 6000 ms
Je to běh sami, otevřete přiložený soubor HTML v prohlížeči s povolenou funkcí JavaScript.

Je pravděpodobné, že totéž provedení adresář v jiném jazyce bude lepší výsledky.

Výzvy

Pochopení a ověření různých pokerový list pořadí pravidla
Zajištění min / max hodnoty pro jednu kategorii a bez přesahu -> pravomoci 10, velkého / little endian
Výpočet kopy vs vysoké karty -> pravomoci 10, mohutnost
Použití eso jako 1 nebo 14 v rovinkách -> ruční hodnota resetování
Alternativní přístupy (viz Viz také)

Použití základny 13 výpočtů
Použití prvočísel, kde produkt dvou prvočísel je "jedinečný" číslo
Part 2

Přidat Závěr
Přijít s způsob, jak začlenit pravděpodobnosti
Provádět v jiném jazyce (Haskell?) Chcete-li zjistit, zda celkový výkon je lepší
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