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}