Added some simple normality tests for the new rand::get_random_gaussian() method.

This commit is contained in:
Davis King 2011-12-18 17:00:03 -05:00
parent b436d840fb
commit d6012c413b
1 changed files with 46 additions and 0 deletions

View File

@ -200,6 +200,49 @@ namespace
}
template <typename rand_type>
void test_normal_numbers(
rand_type& rnd
)
{
dlog << LINFO << "test normality";
double cnt1 = 0; // num <= -1.2
double cnt2 = 0; // num <= -0.5
double cnt3 = 0; // num <= 0
double cnt4 = 0; // num <= 0.5
double cnt5 = 0; // num <= 1.2
const unsigned long total = 1000000;
for (unsigned long i = 0; i < total; ++i)
{
const double r = rnd.get_random_gaussian();
if (r <= -1.2) cnt1 += 1;
if (r <= -0.5) cnt2 += 1;
if (r <= 0) cnt3 += 1;
if (r <= 0.5) cnt4 += 1;
if (r <= 1.2) cnt5 += 1;
}
cnt1 /= total;
cnt2 /= total;
cnt3 /= total;
cnt4 /= total;
cnt5 /= total;
dlog << LINFO << "cnt1: "<< cnt1;
dlog << LINFO << "cnt2: "<< cnt2;
dlog << LINFO << "cnt3: "<< cnt3;
dlog << LINFO << "cnt4: "<< cnt4;
dlog << LINFO << "cnt5: "<< cnt5;
DLIB_TEST(std::abs(cnt1 - 0.11507) < 0.001);
DLIB_TEST(std::abs(cnt2 - 0.30854) < 0.001);
DLIB_TEST(std::abs(cnt3 - 0.5) < 0.001);
DLIB_TEST(std::abs(cnt4 - 0.69146) < 0.001);
DLIB_TEST(std::abs(cnt5 - 0.88493) < 0.001);
}
@ -219,6 +262,9 @@ namespace
dlog << LINFO << "testing kernel_1a";
rand_test<dlib::rand>();
rand_test<dlib::rand>();
dlib::rand rnd;
test_normal_numbers(rnd);
}
} a;