Use SmallRng for challenge instance generation.

This commit is contained in:
FiveMovesAhead 2024-09-20 00:11:44 +08:00
parent f3518c7117
commit cc202ab7e4
2 changed files with 11 additions and 8 deletions

View File

@ -13,7 +13,10 @@ cudarc = { version = "0.12.0", features = [
"cuda-version-from-build-system",
], optional = true }
ndarray = "0.15.6"
rand = { version = "0.8.5", default-features = false, features = ["std_rng"] }
rand = { version = "0.8.5", default-features = false, features = [
"std_rng",
"small_rng",
] }
serde = { version = "1.0.196", features = ["derive"] }
serde_json = { version = "1.0.113" }

View File

@ -1,5 +1,5 @@
use anyhow::{anyhow, Result};
use rand::{rngs::StdRng, Rng, SeedableRng};
use rand::{rngs::SmallRng, SeedableRng};
use serde::de::DeserializeOwned;
use serde::Serialize;
@ -95,18 +95,18 @@ pub struct CudaKernel {
}
pub struct RngArray {
rngs: [StdRng; 8],
index: u32,
rngs: [SmallRng; 8],
index: usize,
}
impl RngArray {
pub fn new(seeds: [u64; 8]) -> Self {
let rngs = seeds.map(StdRng::seed_from_u64);
let rngs = seeds.map(SmallRng::seed_from_u64);
RngArray { rngs, index: 0 }
}
pub fn get_mut(&mut self) -> &mut StdRng {
self.index = (&mut self.rngs[self.index as usize]).gen_range(0..8);
&mut self.rngs[self.index as usize]
pub fn get_mut(&mut self) -> &mut SmallRng {
self.index = (self.index + 1) % 8;
&mut self.rngs[self.index]
}
}