mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
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:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user