#include "Raychel/Core/ZigguratNormal.h" #include #include #include #include int zig_main() { constexpr auto scale = 25.0; constexpr std::size_t n{100'000'000}; constexpr auto expected0 = static_cast(n * 0.04 / 100.0); std::map hist{}; for (std::size_t i{}; i != n; ++i) { ++hist[static_cast(std::round(Raychel::ziggurat_normal() * scale))]; } for (const auto& [value, count] : hist) { const auto actual_value = static_cast(value) / scale; if (actual_value >= 0) { std::cout << ' '; } std::cout << std::fixed << std::setprecision(3) << actual_value << ": " << std::string(count / expected0, '*') << ">\n"; } return 0; }