mirror of
https://github.com/davisking/dlib.git
synced 2024-11-01 10:14:53 +08:00
Added some simple normality tests for the new rand::get_random_gaussian() method.
This commit is contained in:
parent
b436d840fb
commit
d6012c413b
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user