desdemona/strategies/
random.rs

1use crate::strategies::{ScoredPlay, Strategies, Strategy};
2use crate::Game;
3
4use rand::prelude::*;
5
6#[derive(Default, Copy, Clone)]
7pub struct Random {}
8
9impl Strategy for Random {
10    fn name(&self) -> &str {
11        "random"
12    }
13
14    fn version(&self) -> &str {
15        "0.1"
16    }
17
18    fn score_plays(&mut self, game: &Game) -> Vec<ScoredPlay> {
19        let mut rng = thread_rng();
20        game.valid_moves(game.turn)
21            .map(|idx| {
22                let score = rng.gen_range(0.0..1.0);
23                ScoredPlay::new(Strategies::Random, score, idx)
24            })
25            .collect()
26    }
27}