From ae0d5e5328769d9d1d0cfc91a87f4234e5af37e5 Mon Sep 17 00:00:00 2001 From: Eric-Butcher Date: Sun, 29 Jun 2025 15:39:02 -0400 Subject: [PATCH] Removed virtual function definition and implementation for generateUnitNormalRandomValue from concrete classes of prng. --- include/linear_congruential_generator.hpp | 1 - include/mersenne_twister.hpp | 1 - include/prng.hpp | 2 +- include/xorshift.hpp | 1 - src/prngs/linear_congruential_generator.cpp | 16 ---------------- src/prngs/mersenne_twister.cpp | 15 --------------- src/prngs/prng.cpp | 2 +- src/prngs/xorshift.cpp | 16 ---------------- 8 files changed, 2 insertions(+), 52 deletions(-) diff --git a/include/linear_congruential_generator.hpp b/include/linear_congruential_generator.hpp index eef02fc..6b5f614 100644 --- a/include/linear_congruential_generator.hpp +++ b/include/linear_congruential_generator.hpp @@ -51,7 +51,6 @@ class LinearCongruentialGenerator : public PseudoRandomNumberGenerator { LinearCongruentialGenerator(const uint64_t seed, const uint64_t modulus, const uint64_t multiplier, const uint64_t increment, const uint64_t mask); uint64_t generateRandomValue() override; - double generateUnitNormalRandomValue() override; }; #endif \ No newline at end of file diff --git a/include/mersenne_twister.hpp b/include/mersenne_twister.hpp index 3a75b6d..ffabd77 100644 --- a/include/mersenne_twister.hpp +++ b/include/mersenne_twister.hpp @@ -100,7 +100,6 @@ class MersenneTwister : public PseudoRandomNumberGenerator { MersenneTwister(const uint64_t seed); uint64_t generateRandomValue() override; - double generateUnitNormalRandomValue() override; }; #endif \ No newline at end of file diff --git a/include/prng.hpp b/include/prng.hpp index 4386948..69ccf65 100644 --- a/include/prng.hpp +++ b/include/prng.hpp @@ -20,7 +20,7 @@ class PseudoRandomNumberGenerator uint64_t generateCryptographicallyInsecureSeed(); virtual uint64_t generateRandomValue() = 0; - virtual double generateUnitNormalRandomValue() = 0; + double generateUnitNormalRandomValue(); double generateFloatingPointRandomValue(float min, float max); int64_t generateIntegerRandomValue(int32_t min, int32_t max); }; diff --git a/include/xorshift.hpp b/include/xorshift.hpp index db5aba7..b936e9c 100644 --- a/include/xorshift.hpp +++ b/include/xorshift.hpp @@ -34,7 +34,6 @@ class XORShift : public PseudoRandomNumberGenerator { uint64_t generateRandomValue() override; - double generateUnitNormalRandomValue() override; }; #endif \ No newline at end of file diff --git a/src/prngs/linear_congruential_generator.cpp b/src/prngs/linear_congruential_generator.cpp index 350165e..e405f90 100644 --- a/src/prngs/linear_congruential_generator.cpp +++ b/src/prngs/linear_congruential_generator.cpp @@ -72,19 +72,3 @@ uint64_t LinearCongruentialGenerator::generateRandomValue() { return m_current_value; } - -// Generate a random value normalized to the range [0, 1) -double LinearCongruentialGenerator::generateUnitNormalRandomValue() { - - uint64_t random_value = generateRandomValue(); - - uint64_t range = m_maximum_value - m_minimum_value; - if (range == 0) { - return 0.0; // Avoid division by zero - } - - // Normalize the random value to [0, 1) - double normalized_value = static_cast(random_value - m_minimum_value) / static_cast(range); - return normalized_value; -} - diff --git a/src/prngs/mersenne_twister.cpp b/src/prngs/mersenne_twister.cpp index 70702d0..61ccd6d 100644 --- a/src/prngs/mersenne_twister.cpp +++ b/src/prngs/mersenne_twister.cpp @@ -111,18 +111,3 @@ uint64_t MersenneTwister::generateRandomValue(){ uint64_t tempered_value = tempering(raw_value); return tempered_value; } - -// Generate a random value normalized to the range [0, 1) -double MersenneTwister::generateUnitNormalRandomValue() { - - uint64_t random_value = generateRandomValue(); - - uint64_t range = m_maximum_value - m_minimum_value; - if (range == 0) { - return 0.0; // Avoid division by zero - } - - // Normalize the random value to [0, 1) - double normalized_value = static_cast(random_value - m_minimum_value) / static_cast(range); - return normalized_value; -} diff --git a/src/prngs/prng.cpp b/src/prngs/prng.cpp index 6628e72..b22693b 100644 --- a/src/prngs/prng.cpp +++ b/src/prngs/prng.cpp @@ -66,4 +66,4 @@ double PseudoRandomNumberGenerator::generateUnitNormalRandomValue() { // Normalize the random value to [0, 1) double normalized_value = static_cast(random_value - m_minimum_value) / static_cast(range); return normalized_value; -} \ No newline at end of file +} diff --git a/src/prngs/xorshift.cpp b/src/prngs/xorshift.cpp index 947fed1..ce3a3f7 100644 --- a/src/prngs/xorshift.cpp +++ b/src/prngs/xorshift.cpp @@ -36,19 +36,3 @@ uint64_t XORShift::generateRandomValue() { return m_current_value; } - -// Generate a random value normalized to the range [0, 1) -double XORShift::generateUnitNormalRandomValue() { - - uint64_t random_value = generateRandomValue(); - - uint64_t range = m_maximum_value - m_minimum_value; - if (range == 0) { - return 0.0; // Avoid division by zero - } - - // Normalize the random value to [0, 1) - double normalized_value = static_cast(random_value - m_minimum_value) / static_cast(range); - return normalized_value; -} -