diff --git a/reasoning_gym/arithmetic/basic_arithmetic.py b/reasoning_gym/arithmetic/basic_arithmetic.py index 9a97f35b..dc5ff890 100644 --- a/reasoning_gym/arithmetic/basic_arithmetic.py +++ b/reasoning_gym/arithmetic/basic_arithmetic.py @@ -34,7 +34,8 @@ class ArithmeticDataset: def __init__(self, config: ArithmeticDatasetConfig): self.config = config self.config.validate() - self.rng = Random(config.seed) + # Generate base seed if none provided + self.seed = config.seed if config.seed is not None else Random().randint(0, 2**32) def __len__(self) -> int: return self.config.size @@ -51,8 +52,8 @@ class ArithmeticDataset: - answer: str, the ground truth result - metadata: dict with generation parameters """ - # Use seed derived from idx for deterministic generation - item_rng = Random(self.rng.randint(0, 2**32) + idx) + # Create deterministic RNG from base seed and idx + item_rng = Random(self.seed + idx) num_terms = item_rng.randint(self.config.min_terms, self.config.max_terms) num_digits = item_rng.randint(self.config.min_digits, self.config.max_digits) @@ -165,4 +166,6 @@ class ArithmeticDataset: "Solve {0}", "Evaluate the expression: {0}" ] - return self.rng.choice(templates).format(expression) + # Use deterministic RNG for template selection + template_rng = Random(self.seed) + return template_rng.choice(templates).format(expression)