Function pokers::equity_calculator::approx_equity

source ·
pub fn approx_equity<F: Fn(u8)>(
    hand_ranges: &[HandRange],
    board_mask: u64,
    dead_mask: u64,
    n_threads: u8,
    stdev_target: f64,
    cancel_token: Arc<AtomicBool>,
    callback: F
) -> Result<SimulationResults, SimulatorError>
Expand description

Runs a monte carlo simulation to calculate range vs range equity

Returns the equity for each player

§Arguments

  • hand_ranges Array of hand ranges
  • board_mask 64 bit mask of public cards
  • dead_mask 64 bit mask of dead cards
  • n_threads Number of threads to use in simulation
  • stdev_target Target std deviation for simulation
  • cancel_token A shared boolean to stop simulation
  • callback A function that takes estimated progress (0-100%)

§Example

use std::sync::{atomic::AtomicBool, Arc};
use pokers::{HandRange, get_card_mask};
use pokers::approx_equity;
let ranges = HandRange::from_strings(["random".to_string(), "random".to_string()].to_vec());
let board_mask = get_card_mask("");
let dead_mask = get_card_mask("");
let cancel_token = Arc::new(AtomicBool::new(false));
let callback = |x: u8| {
    print!("\rProgress: {x}%");
    io::stdout().flush().unwrap();
};
let equities = approx_equity(&ranges, board_mask, dead_mask, 4, 0.001, cancel_token, callback).unwrap();