Tweak Hard-level AI

Shuffles the utilities-index pairs for the cases where there are
multiple pairs of the same utility value.
This commit is contained in:
Stephen Seo 2022-03-07 16:59:18 +09:00
parent c960859348
commit ec9aac8400
1 changed files with 11 additions and 4 deletions

View File

@ -115,12 +115,19 @@ pub fn get_ai_choice(
AIDifficulty::Easy => pick_some_of_choices(AI_EASY_MAX_CHOICES),
AIDifficulty::Normal => pick_some_of_choices(AI_NORMAL_MAX_CHOICES),
AIDifficulty::Hard => {
let mut utilities: Vec<(usize, f64)> = utilities.into_iter().enumerate().collect();
// shuffle utilities for the cases where there are equivalent utilities
if utilities.len() > 1 {
for i in 1..utilities.len() {
utilities.swap(i, thread_rng().gen_range(0..=i));
}
}
// only pick the best option all the time
let mut max = 0.0f64;
let mut max = -1.0f64;
let mut max_idx: usize = 0;
for (idx, utility) in utilities.iter().enumerate() {
if *utility > max {
max = *utility;
for (idx, utility) in utilities {
if utility > max {
max = utility;
max_idx = idx;
}
}