Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,26 @@ add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} PRIVATE randomizer_lib)


# Add compiler warnings only for GCC and Clang
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(randomizer_lib PRIVATE
-Wall
-Wextra
-Wshadow
-Wconversion
-Wpedantic
-Werror
)
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall
-Wextra
-Wshadow
-Wconversion
-Wpedantic
-Werror
)
endif()


enable_testing()
add_subdirectory(tests)
2 changes: 1 addition & 1 deletion src/prngs/linear_congruential_generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ double LinearCongruentialGenerator::generateUnitNormalRandomValue() {
}

// Normalize the random value to [0, 1)
double normalized_value = static_cast<double>(random_value - m_minimum_value) / range;
double normalized_value = static_cast<double>(random_value - m_minimum_value) / static_cast<double>(range);
return normalized_value;
}

5 changes: 3 additions & 2 deletions src/prngs/prng.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ double PseudoRandomNumberGenerator::generateFloatingPointRandomValue(float min,
}

int64_t PseudoRandomNumberGenerator::generateIntegerRandomValue(int32_t min, int32_t max) {
int64_t random_val = generateUnitNormalRandomValue();
int64_t scaled_value = min + (random_val * (max - min));
double random_val = generateUnitNormalRandomValue();
double random_val_magnitude = random_val * (max - min);
int64_t scaled_value = static_cast<int64_t>(min + random_val_magnitude);
return scaled_value;
}
2 changes: 1 addition & 1 deletion src/prngs/xorshift.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ double XORShift::generateUnitNormalRandomValue() {
}

// Normalize the random value to [0, 1)
double normalized_value = static_cast<double>(random_value - m_minimum_value) / range;
double normalized_value = static_cast<double>(random_value - m_minimum_value) / static_cast<double>(range);
return normalized_value;
}

4 changes: 2 additions & 2 deletions src/runner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ ProgramRunner::ProgramStatus ProgramRunner::iterate() {

case ProgramBehaviour::GenerateFloating: {
this->iteration++;
float random_float = this->prng->generateFloatingPointRandomValue(
double random_float = this->prng->generateFloatingPointRandomValue(
std::get<float>(this->min.value_or(0.0f)),
std::get<float>(this->max.value_or(1.0f))
);
Expand All @@ -313,7 +313,7 @@ ProgramRunner::ProgramStatus ProgramRunner::iterate() {

case ProgramBehaviour::GenerateInteger: {
this->iteration++;
int32_t random_int = this->prng->generateIntegerRandomValue(
int64_t random_int = this->prng->generateIntegerRandomValue(
std::get<int32_t>(this->min.value_or(0)),
std::get<int32_t>(this->max.value_or(1))
);
Expand Down
11 changes: 11 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,16 @@ add_executable(RandomizerTests ${TEST_SOURCES})
# Link to GoogleTest and the library for the randomizer code
target_link_libraries(RandomizerTests PRIVATE gtest gtest_main randomizer_lib)

if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(RandomizerTests PRIVATE
-Wall
-Wextra
-Wshadow
-Wconversion
-Wpedantic
-Werror
)
endif()

include(GoogleTest)
gtest_discover_tests(RandomizerTests)
Loading