Giter VIP home page Giter VIP logo

freebj's Introduction

FreeBJ Blackjack simulator

FreeBJ is a free and open source Blackjack simulator used to make statistical analysis of game strategy. It supports a variety of game rules including any valid combination of:

  • European no holecard (ENHC) or American holecard (AHC);
  • Hit soft 17 or stand on soft 17;
  • Any number of card decks;
  • Double after split (DAS) or not;
  • Double on 10-11 only, 9-11 only, or any two cards;
  • Hit split aces or not;
  • Maximum number of split hands;
  • Early and late surrender;

FreeBJ is able to count cards using the hi-lo system and adapt its bet based on a programmable betting strategy. The simulator also supports playing deviations and one can dynamically add their own deviations.

FreeBJ is a command-line interface program that prints on its standard output a JSON of all the statistics gathered; the program can also output on demande a CSV of bankroll samples to have a look on the evolution of your capital throughout the playing session.

Installing

The easiest way to install FreeBJ is through Rust's Cargo:

$ cargo install freebj

Refer to crates.io for more information on how to install and use Cargo for your operating system and distribution.

Typical usage

FreeBJ can be invoked without any arguments, it will then run a simulation of one million rounds with default rules:

  • Americal holecard (AHC);
  • Stand on soft 17 (S17);
  • No DAS;
  • 6 decks of cards;
  • No surrender;

Card counting is disabled by default.

$ freebj
{
  "rounds": 1000000,
  "rules": {
    "game_type": "ahc",
    "soft17": "s17",
    "das": false,
    "bj_pays": 1.5,
    "double_down": "any_two",
    "surrender": "no_surrender",
    "play_ace_pairs": false,
    "max_splits": 4,
    "decks": 6,
    "penetration_cards": 250
  },
  "ev": -0.006965999999999973,
  "stddev": 1.134225621872368,
  "winning_distrib": {
    "-4.0": 78,
    "-3.0": 565,
    "-2.0": 42360,
    "-1.0": 436266,
    "+0.0": 88616,
    "+1.0": 326537,
    "+1.5": 44988,
    "+2.0": 59870,
    "+3.0": 612,
    "+4.0": 108
  },
  "hands": {
    "total": 1024402,
    "won": 445247,
    "lost": 491025,
    "push": 88130,
    "busted": 161041,
    "blackjack": 47147,
    "doubled": 95252,
    "split": 46241,
    "insured": 0,
    "surrender": 0
  }
}

For more information about the JSON output and all the options available, please refer to the manpage freebj(1).

More usage examples

Run a simulation of 10 billions rounds spread across 16 threads:

$ freebj -n 10G -j 16

Play a european game with early surrender, DAS, hit soft 17, and 4 card decks:

$ freebj --enhc --esurr --das --h17 -d4

Always stard the rounds with an ace and 5 for the players and an 8 as the dealer upcard and always double-down (instead of hitting):

$ freebj -c A,5 --dealer=8 -aD

Enable hi-lo card counting and default playing deviations (first 20 deviations), use a default betting strategy (bet 1.0 on TC 0, increase bet by 1 for each TC point, do not play negative TC):

$ freebj --hilo --deviations

Enable hi-lo, no default deviations, but add a specific user playing deviation consisting of doubling-down with a TC ≥ 3 with a hard 12 against a dealer 6:

$ freebj --hilo -D "12vs6:>3D"

Enable hi-lo with no playing devations and set a custom betting strategy where the player bets 10.00 $ on a TC 0, increases (resp. decreases) their bet by 5.00 $ on each poisitive TC point (resp. negative TC point). A maximum TC of 6 is set to limit risk:

TC BET
−3 0.00 $
−2 0.00 $
−1 5.00 $
0 10.00 $
+1 15.00 $
+2 20.00 $
+3 25.00 $
+4 30.00 $
+5 35.00 $
+6 40.00 $
+7 40.00 $
$ freebj --hilo -b 10.0 --bet-per-tc=5.0 --bet-max-tc=6

Blackjack research with FreeBJ

FreeBJ can be viewed as a research tool to study Blackjack and its strategies. Other research tools can be built upon freebj (so-called "study" scripts); none are provided in this source tree, but many are available by the same author along their output data in the freebj_study repository.

A website is also available for plushing these results:

https://freebj.lesenechal.fr

freebj's People

Contributors

kevin-lesenechal avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.