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
Lauluja pokeri ja rahapelit
ABC pokeri
Rulettia järjestelmien
Miten voittaa ruletissa
Martingale ruletti järjestelmä
Ruletti netissä - Shaun järjestelmä
System kaduilla (katu-järjestelmä)
Järjestelmät ruletti - fibonaccin lukujono
Ruletti netissä - Järjestelmät Roulette - parlay järjestelmä
Järjestelmät Roulette - System 63
Järjestelmät Roulette - Labouchere System
D'Alembert Järjestelmä
Pokerinpelaaja ja peluri psykologiaa
Pokeri vitsejä
Korttipelit
Bonus rekisteröinnit
Downswing poker - laskukauden pokeri
Poker Forum - arvion parhaista maailmassa
Poker koska työ - lisätulonlähde
Välitön bonus ilman talletus
Instant pokeri rahaa
Kurinalaisuutta joka on eniten ennustettavissa
Vedonlyönti sanasto
Pelaaja käskyä - säännöt vedonlyönti aloittelijoille
Suurimmat voittaa vedonvälittäjä
Algoritmi pokerin PHP
Haastatteluja tähdet pokerin
Poker vaatteet - maailmanlaajuinen poker kaupat
no deposit poker new poker bankroll gratis bonus
Bonukset Ilman Talletusta
Texas Holdem säännöt - Flop - Turn
Jälleenmyyjä pokerissa ja sokea
Sanasto pokerin termejä
Pelaa oikealla rahalla (pokeria Internetissä)
Freeroll - freerollit
Historia World Series of Poker
Säännöt 2-7 Lowball Draw Poker
888Poker Network - Verkoston sivustojen
BOSS International Network - Verkoston sivustojen
Entraction Poker Network arvostelu
iPoker Network arvostelu
Merge Gaming Network arvostelu
Ongame Network arvostelu
Myydyin Poker Kirjat
Miten Twitter muokkaa Pokerin maailma
Viktor Blom haastattelu - Isildur1 haastattelu
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 Algoritmi pokerin PHP
 



Ainoa altistuminen pokeria on ollut muutaman tunnin parin viime viikon käsittelyssä läpi erilaisten käden ranking sääntöjä. Näyttää siltä, ​​että haaste nopeasti löytää voittaja peli on yksinkertainen, mutta vaikeasti. Siten ajatus tuottaa kartoitus käsi ja pieni rajoitettu kokonaisuus, ajattelin, on arvoltaan noin tutkinnan. Koodi takana Tässä artikkelissa on proof of concept näiden kuivaa laskennallisen menettelyn.

Tausta
Alunperin koodinpätkä luotiin vastauksena 4 tunnin testin ohjelmistokehittäjä. Se käsitti jälkeen tehtävä:

Toteuttaa

Kirjasto (in ohjelmointikieli valinta), joka arvioi Mitkä ovat voittaja (t) useiden 5 kortin pokerikäsi (http://en.wikipedia.org/wiki/List_of_poker_hands). Huomaa tässä hankkeessa, että olet täytyy toteuttaa vain osa säännöllistä pokerikädet:

Väri
Kolmoset
Kaksi Kind
Korkea kortti
Syöttö

Kokoelma pelaajia Showdown: Pelaajan nimi ja 5 Cards (kukin täsmennetään määrä ja puku kortti) - esimerkiksi,

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

Kokoelma voittavia pelaajia (enemmän kuin yksi tasatilanteessa) - esimerkiksi,

Joe
Ilmoittakaa mahdolliset oletukset olet tehnyt.

Täytäntöönpano
Koska alkuperäisen tehtävän suoritettuaan, toteuttamiseen hakemiston laajensi tätä tukea koko joukko standardin pokerin käsiä.

JavaScript valittiin sen joustavuus ja helppokäyttöisyys.

Oletukset

Korkein ranking käsi (kuten per standardin pokerikäden rankingissa järjestelmä, [^]) on voittava käsi. On aina vähintään yksi voittaja.
Monta kättä on positiivinen satunnaisen kokonaisluvun.
Määrä kortteja kädessä on positiivinen satunnainen kokonaisluku alle 13. määrä kortteja kädessä ei ole oikeastaan ​​väliä, mutta on järkevää, että se ei ylitä 13.
Kortit kädessä lähtöisin yhdestä kannelta. Prosessi voidaan muokata, jotka tukevat useita kansia, mutta se menettää joitakin sen avoimuutta.
Jokainen kortti edustaa 2-kirjain sanan, jossa ensimmäinen kirjain tunnistaa sijoitus (eli on asetettu [1..10, J, Q, K, A]) ja toinen kirjain tunnistaa Suite (ts on asetettu [H, H, C, S])
Syöte sisältää, rivillä, nimi soittimen ja joukon kortteja, jotka muodostavat pelaajan käsi, jossa yksiköt ovat pilkulla erotettuna. Useiden rivien Todennäköiset useita pelaajia. Ei tarkastuksia lisätään tarkistaa, että pelaajat ovat ainutlaatuisia, on sama määrä kortteja, ja he käyttävät korttipakan.
Pelaaja nimi ei sisällä välilyöntejä; jos se, ne eivät ole läsnä tuotos.
Algoritmi

Tavoitteena on, että arvon määrittäminen käden korttien Tämä heijastaa sen vahvuus / tulokset Standardin pokerikäden rankingissa järjestelmä ja välttää lajitella, vertailla, ja lookup yksittäisiä käsiä. Voittaja peli on pelaaja, jolla Korkein tulokset.

Jotta laskea pisteet, koska jokaisen käden kuin kaksiulotteinen matriisi. Yhteensä yli sarakkeet antaa meille tarpeeksi tietoa siitä päätellä Olipa meillä on neljä, jollaisia, täyskäsi, kolmoset, kaksi paria, tai yksi pari. Summat poikki rivien antaa meille tarpeeksi tietoa, että meillä on päätellä Olipa väri, suora tai värisuora. Viimeinen rivi antaa myös pois korkea kortti ja hyppyreihin.

Esimerkiksi tässä miten 2H, 9D, 3S, 2C, QD näyttää kuivassa ja matriisi:

Piilota 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 |> - col => korttia sviittiä (flush, [0,5+])
 | S | | | | 1 | | | | | | | | | | | | 0 |
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
 | | | | 2 | 1 | | | | | | 1 | | | 1 | | | 0 |> - row => korttia listalla (N jollaisia, [1..4 +])
 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +
                                                   ^ ---- Cell => perättäistä korttia (suora, [0,5+])
Tässä tapauksessa meillä on pari 3 hyppyreihin (ei suoraa, ei huuhtele).

Lasketaan vasemmalta oikealle joka takaa meille, että käytämme aina parhaita käytettävissä kortteja pisteet ja että algoritmi toimii yhtä hyvin 7-card käsissä, esimerkiksi.

Tämä lähestymistapa vapauttaa meidät lajittelu kortteja, vertailu käsiä, tai suorittaa hakuja. Se käyttää kiinteää muistia sitoo harva 15 x 4 matriisi. Yhden käden, se toimii jatkuvasti ajan O (1), tarvitaan yhteenvetona koko rivejä ja sarakkeita. Jos peli sisältää n käsissä, se vie O (n) aika pisteet niitä kaikkia.

Temppu on määrittämällä pisteet Se on "ainutlaatuinen". Harkitse seuraavia kaavoja:

Piilota Copy Code
 Hand Kategoriat | Big Endian | Little Endian
 ---------------- | ------------ + --------------------
 Straight Flush | p & f -> 8 | kickers
 Neloset | d4 -> 7 | d4
 Full House | p1 & K3 -> 6 | p1 + k 3 * (10 ^ 2)
 Flush | f -> 5 | kickers
 Straight | p -> 4 | kickers
 Kolmoset | K3 -> 3 | k3
 Kaksi paria | p2 -> 2 | p2 + p1 * (10 ^ 2)
 Yksi pari | p1 -> 1 | p1
 Korkea kortti | -> 0 | kickers
jossa:

kickers = sum (r * (10 ^ (- 15 + i))), missä r on sijoitus i: nnen kortti kardinaliteettia 1 Kumpi soittaa
f = määrä kortteja saman suite jos 5 tai enemmän, 0 muuten
s = määrä perättäistä korttia, jos 5 tai enemmän, 0 muuten
d4 = r * (10 ^ -4), missä r on Korkein sijoitus kortti kardinaliteetti 4
K3 = r * (10 ^ -4), missä r on Korkein sijoitus kortin kardinaliteetti 3
p2 = r * (10 ^ -4), missä r on toiseksi korkein sijoitus kortti kardinaliteetti 2
p1 = r * (10 ^ -4), missä r on Korkein sijoitus kortti kardinaliteetti 2
sitten pisteet = (luokka || 0) * (luokka iso endian + Kategorian little endian) + hyppyreihin.

Esimerkkejä:

Näin 2H, 9D, 3S, 2C QD (yksi pari) pisteet lasketaan:

Piilota 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 Kategoriat | Big Endian | Little Endian | Tulos
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kaavin | 0
Neloset | d4 -> 7 | d4 | 0
Full House | p1 & K3 -> 6 | p1 + k 3 * (10 ^ 2) | 0
Flush | f -> 5 | kaavin | 3 * (10 ^ -14) + 9 * (10 ^ -13) + 12 * (10 ^ -12)
Straight | p -> 4 | kaavin | 0
Kolmoset | K3 -> 3 | k3 | 0
Kaksi paria | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
Yksi pari | p1 -> 1 | p1 | 0,0002 = 2 * (10 ^ -4)
Korkea kortti | -> 0 | kaavin | 1.2930000000000001e-11
  
pisteet = +1,0002000000129 = (p1) * (1 + 0,0002) + 1.2930000000000001e-11
Näin 10S, 10C, 10H, 4D, 4C (Full House) pisteet lasketaan:

Piilota 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 |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - +

Hand Kategoriat | Big Endian | Little Endian | Tulos
---------------- | ------------------ ------------ + | - ------------
Straight Flush | p & f -> 8 | kaavin | 0
Neloset | 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 | kaavin | 0
Straight | p -> 4 | kaavin | 0
Kolmoset | K3 -> 3 | d3 | 0001 = 10 (10 ^ -4)
Kaksi paria | p2 -> 2 | p2 + p1 * (10 ^ 2) | 0
Yksi pari | p1 -> 1 | p1 | 0,0004 = 4 * (10 ^ -4)
Korkea kortti | -> 0 | kaavin | 0

pisteet = 6,1004 = (P1 & K3) * (6 + 0,1004) + 0
Huomaa, että on mahdollista, että palauttaminen käden pisteet.

Suorituskyky

Chrome (10.0.648.205, AMD Turion, 1.6GHz, 512KB L2, 2GB DDR2), yhden käden arviointi vie ~ 1 ms.

Piilota Copy Code
10 -> ~ 1 ms
100 -> ~ 6 ms
1000 -> ~ 60 ms
10000 -> ~ 600 ms
100000 -> ~ 6000 ms
Se ajaa itse, avaa liitteenä HTML-tiedoston selaimessa on JavaScript käytössä.

On todennäköistä, että sama toteuttamista hakemistossa toisella kielellä tuottaa parempia tuloksia.

Haasteet

Ymmärtäminen ja tarkistaa eri käsi ranking säännöt
Varmistamalla min / max -arvo luokka ilman päällekkäisyyksiä -> valtuudet 10, iso / pieni endian
Laskeminen kickers vs. korkea kortti -> valtuudet 10, mahtavuus
Hakeminen Ace kuin 1 tai 14 suorat -> manuaalinen nollaus arvo
Vaihtoehtoisia lähestymistapoja (vrt Katso myös)

Käytä pohjan 13 laskennat
Käyttö alkulukuja joissa tuotetta kahden alkulukua on "ainutlaatuinen" numero
Osa 2

Lisää Johtopäätös
Keksiä tapa sisällyttää todennäköisyyksiä
Toteuttaa toisella kielellä (Haskell?), Onko yleinen suorituskyky on parempi
Koodi
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