#poker #texas #evaluator #odds #hold-em #texas-holdem

espada

Texas Hold'em扑克赔率评估器

4个版本 (2个重大更新)

0.3.1 2024年3月28日
0.3.0 2024年3月22日
0.2.0 2024年3月20日
0.1.0 2024年3月8日

#242 in 数学

Download history 37/week @ 2024-04-02

每月198次下载

自定义许可

735KB
13K SLoC

♠️ espada

Texas Hold'em扑克赔率评估器。

https://crates.io/crates/espada Recent Downloads License

快速入门

将此添加到Cargo.toml

[dependencies]
espada = "0.1"

在你的 main.rslib.rs 中,你可以这样使用

use espada::evaluator::FlopExhaustiveEvaluator;
use espada::hand_range::HandRange;

fn main() {
    let board = [
        Some(Card::new(Rank::Queen, Suit::Spade)),
        Some(Card::new(Rank::Eight, Suit::Diamond)),
        Some(Card::new(Rank::Deuce, Suit::Heart)),
        None,
        None
    ];

    let players = vec!["JJ+".parse().unwrap(), "A2s+".parse().unwrap()];

    let evaluator = FlopExhaustiveEvaluator::new(&board, &players);

    let mut materialized = 0_u32;
    let mut wins = vec![0_f32; players.len()];

    for showdown in evaluator {
        for (player_index, player) in showdown.players().into_iter().enumerate() {
            if player.is_winner() {
                wins[player_index] += 1.0 / showdown.winner_len() as f32
            }
        }

        materialized += 1;
    }

    for (player_index, _) in players.into_iter().enumerate() {
        println!(
            "player {}: {:.2}% eq",
            player_index,
            wins[player_index] / materialized as f32 * 100.0
        );
    }
}

许可

在此

依赖项

~2.2–3.5MB
~55K SLoC