Skip to main content

luaur_analysis/methods/
constraint_solver_randomize.rs

1use crate::records::constraint_solver::ConstraintSolver;
2
3impl ConstraintSolver {
4    pub fn randomize(&mut self, seed: u32) {
5        if self.unsolved_constraints.is_empty() {
6            return;
7        }
8
9        let mut rng = seed;
10
11        for i in (1..self.unsolved_constraints.len()).rev() {
12            let j = (rng as usize) % (i + 1);
13
14            self.unsolved_constraints.swap(i, j);
15
16            rng = rng.wrapping_mul(1664525).wrapping_add(1013904223);
17        }
18    }
19}