distributions: fix tests (#2975)

Remove stochastic elements in the distributions tests and ensure they
are deterministic.

Co-authored-by: Christoffer Lerno <christoffer@aegik.com>
This commit is contained in:
konimarti
2026-02-24 16:18:53 +01:00
committed by GitHub
parent 0085fe73ad
commit f1d03c194f

View File

@@ -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");
}
}