Function pokers::equity_calculator::exact_equity
source · pub fn exact_equity<F: Fn(u8)>(
hand_ranges: &[HandRange],
board_mask: u64,
dead_mask: u64,
n_threads: u8,
cancel_token: Arc<AtomicBool>,
callback: F
) -> Result<SimulationResults, SimulatorError>
Expand description
Calculates exact range vs range equities
Returns the equity for each player
§Arguments
hand_ranges
Array of hand rangesboard_mask
64 bit mask of public cardsdead_mask
64 bit mask of dead cardsn_threads
Number of threads to use in simulationcancel_token
A shared boolean to stop simulationcallback
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 = exact_equity(&ranges, board_mask, dead_mask, 4, cancel_token, callback).unwrap();