From f1d03c194f0d1303701f9d9ae32167815dc519c1 Mon Sep 17 00:00:00 2001 From: konimarti <30975830+konimarti@users.noreply.github.com> Date: Tue, 24 Feb 2026 16:18:53 +0100 Subject: [PATCH] distributions: fix tests (#2975) Remove stochastic elements in the distributions tests and ensure they are deterministic. Co-authored-by: Christoffer Lerno --- test/unit/stdlib/math/distributions.c3 | 51 +------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/test/unit/stdlib/math/distributions.c3 b/test/unit/stdlib/math/distributions.c3 index b981cc414..dd945b07e 100644 --- a/test/unit/stdlib/math/distributions.c3 +++ b/test/unit/stdlib/math/distributions.c3 @@ -83,16 +83,12 @@ fn void test_uniform_random_samples() @test DefaultRandom r; random::seed_entropy(&r); - double sum; int n_samples = 10_000; - for (int i = 0; i < n_samples; i++) { double sample = dist.random(&r); - sum += sample; assert(sample >= 0.0 && sample <= 10.0, "Random sample in range"); } - approx(sum/n_samples, 5.000, 0.1); } fn void test_normal_mean_variance() @test @@ -153,31 +149,6 @@ fn void test_normal_round_trip() @test } } -fn void test_normal_random_samples() @test -{ - NormalDist std_normal = distributions::normal(0.0, 1.0); - - double sum = 0.0; - double sum_sq = 0.0; - int n_samples = 10_000; - - DefaultRandom r; - random::seed_entropy(&r); - - for (int i = 0; i < n_samples; i++) - { - double sample = std_normal.random(&r); - sum += sample; - sum_sq += sample * sample; - } - - double sample_mean = sum / (double)n_samples; - double sample_var = sum_sq / (double)n_samples - sample_mean * sample_mean; - - approx(sample_mean, 0.0, 0.1, "Sample mean ~0"); - approx(sample_var, 1.0, 0.1, "Sample variance ~1"); -} - fn void test_normal_custom_parameters() @test { NormalDist custom = distributions::normal(100.0, 15.0); @@ -290,26 +261,6 @@ fn void test_t_quantile() @test approx(upper, -lower, RELAXED_TOLERANCE, "Inverse CDF symmetry"); } - -fn void test_t_random_samples() @test -{ - TDist dist = distributions::t_distribution(10.0); - - double sum = 0.0; - int n_samples = 10_000; - - DefaultRandom r; - random::seed_entropy(&r); - - for (int i = 0; i < n_samples; i++) - { - sum += dist.random(&r); - } - - double sample_mean = sum / (double)n_samples; - approx(sample_mean, 0.0, 0.1, "Sample mean ~0"); -} - fn void test_f_mean() @test { FDist dist =distributions::f_distribution(5.0, 10.0); @@ -353,7 +304,7 @@ fn void test_f_random_samples() @test for (int i = 0; i < 100; i++) { double sample = dist.random(&r); - assert(sample > 0.0, "Random sample positive"); + assert(sample >= 0.0, "Random sample positive"); } }