IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 15d31c12 authored by Antonio Augusto Alves Junior's avatar Antonio Augusto Alves Junior
Browse files

solving the issue #4. Corresponding tests added.

parent 67eefe7e
No related branches found
No related tags found
No related merge requests found
...@@ -46,12 +46,14 @@ using namespace matplot; ...@@ -46,12 +46,14 @@ using namespace matplot;
template<typename Generator> template<typename Generator>
void plot_normal(char* name, uint64_t seed); void plot_normal(const char* name, uint64_t seed);
template<typename Generator> template<typename Generator>
void plot_exponential(char* name, uint64_t seed); void plot_exponential(const char* name, uint64_t seed);
template<typename Generator>
void plot_uniform(const char* name, uint64_t seed);
int main(int argv, char** argc) int main(int argv, char** argc)
{ {
...@@ -72,44 +74,26 @@ int main(int argv, char** argc) ...@@ -72,44 +74,26 @@ int main(int argv, char** argc)
plot_exponential<random_iterator::squares4_128>("squares4_{128}", default_seed); plot_exponential<random_iterator::squares4_128>("squares4_{128}", default_seed);
plot_exponential<random_iterator::ars>("ars", default_seed); plot_exponential<random_iterator::ars>("ars", default_seed);
plot_exponential<random_iterator::threefry>("threefry", default_seed); plot_exponential<random_iterator::threefry>("threefry", default_seed);
show();
/*
std::uniform_real_distribution<double> udist(0.0, 1.0);
std::normal_distribution<double> ndist(0.0, 1.0);
std::exponential_distribution<double> edist(1.0);
auto urng_stream = random_iterator::make_stream( udist, RNG, 0);
auto nrng_stream = random_iterator::make_stream( ndist, RNG, 1);
auto erng_stream = random_iterator::make_stream( edist, RNG, 1);
std::vector<double> data_normal_distribution; plot_uniform<random_iterator::philox>("philox", default_seed);
std::vector<double> data_uniform_distribution; plot_uniform<random_iterator::squares3_64>("squares3_{64}", default_seed);
std::vector<double> data_exponential_distribution; plot_uniform<random_iterator::squares4_64>("squares4_{64}", default_seed);
plot_uniform<random_iterator::squares3_128>("squares3_{128}", default_seed);
plot_uniform<random_iterator::squares4_128>("squares4_{128}", default_seed);
plot_uniform<random_iterator::ars>("ars", default_seed);
plot_uniform<random_iterator::threefry>("threefry", default_seed);
for(size_t i =0; i<NSAMPLES; ++i){
data_normal_distribution.push_back(nrng_stream[i]); show();
data_uniform_distribution.push_back(urng_stream[i]);
data_exponential_distribution.push_back(erng_stream[i]);
}
subplot(1, 3, 0);
auto data_normal_histogram = hist(data_normal_distribution, histogram::normalization::probability);
subplot(1, 3, 1);
auto data_uniform_histogram = hist(data_uniform_distribution, histogram::normalization::probability);
subplot(1, 3, 2);
auto data_exponential_histogram = hist(data_exponential_distribution, histogram::normalization::probability);
show();
*/
return 0; return 0;
} }
template<typename Generator> template<typename Generator>
void plot_normal(char* name, uint64_t seed){ void plot_normal(const char* name, uint64_t seed){
auto f = figure(false); auto f = figure(false);
auto tile = f->nexttile(); auto tile = f->nexttile();
...@@ -144,7 +128,7 @@ void plot_normal(char* name, uint64_t seed){ ...@@ -144,7 +128,7 @@ void plot_normal(char* name, uint64_t seed){
} }
template<typename Generator> template<typename Generator>
void plot_exponential(char* name, uint64_t seed){ void plot_exponential(const char* name, uint64_t seed){
auto f = figure(false); auto f = figure(false);
auto tile = f->nexttile(); auto tile = f->nexttile();
...@@ -175,3 +159,36 @@ void plot_exponential(char* name, uint64_t seed){ ...@@ -175,3 +159,36 @@ void plot_exponential(char* name, uint64_t seed){
f->draw(); f->draw();
} }
template<typename Generator>
void plot_uniform(const char* name, uint64_t seed){
auto f = figure(false);
auto tile = f->nexttile();
Generator RNG(default_seed);
std::uniform_real_distribution<double> udist(0.0, 1.0);
auto urng_stream = random_iterator::make_stream( udist, RNG, 1);
std::vector<double> data_uniform_distribution;
for(size_t i =0; i<NSAMPLES; ++i){
data_uniform_distribution.push_back(urng_stream[i]);
}
auto data_uniform_histogram = hist(data_uniform_distribution, histogram::normalization::pdf);
title(name);
hold(on);
auto funiform = [&](double y) {
return fabs(y)<1 && y >0;
};
fplot(funiform, std::array<double, 2>{-0.5, 1.5})->line_width(2.0);
f->draw();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment