desdemona/strategies/
random.rs1use 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}