(n_base: usize, n_perturbations: usize, n_dims: usize)
| 344 | } |
| 345 | |
| 346 | fn generate_test_data(n_base: usize, n_perturbations: usize, n_dims: usize) -> Vec<Vector> { |
| 347 | let mut rng = rand::thread_rng(); |
| 348 | let mut all_vectors = Vec::with_capacity(n_base * (n_perturbations + 1)); |
| 349 | let base_vectors: Vec<Vector> = (0..n_base) |
| 350 | .map(|_| (0..n_dims).map(|_| rng.gen_range(-1.0..=1.0)).collect()) |
| 351 | .collect(); |
| 352 | |
| 353 | for base in base_vectors { |
| 354 | all_vectors.push(base.clone()); |
| 355 | for _ in 0..n_perturbations { |
| 356 | let perturbed = generate_perturbed_vector(&base, 0.1); |
| 357 | all_vectors.push(perturbed); |
| 358 | } |
| 359 | } |
| 360 | |
| 361 | all_vectors.shuffle(&mut rng); |
| 362 | all_vectors |
| 363 | } |
| 364 | |
| 365 | fn update_results(results: &mut BinaryHeap<SearchResult>, result: SearchResult, k: usize) { |
| 366 | if results.len() < k { |
no test coverage detected