diff --git a/PM.cpp b/PM.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8ab29a73a20989eb49b3e348ea6868a679758afb --- /dev/null +++ b/PM.cpp @@ -0,0 +1,58 @@ +#include <iostream> +#include <fstream> +#include <stdio.h> +#include <math.h> +using namespace std; +const unsigned int n = 0xFFFF; +const unsigned int m = 16807; +const unsigned int b = 0; +static long seed = 0xAAAA; +long uniform() { + long unsigned int hi = m * (seed & n); + long unsigned int lo = m * (seed >> 16); + + lo+= (hi & 0x7FFF) << 16; + lo+= hi >> 15; + + if (lo > 0x7FFFFFFFF) + lo -= 0x7FFFFFFF; + seed=(long) lo; + return seed %10; +} +void store_res(long * res, int freqs[10], int size){ + std::ofstream myfile, freqcsv; + myfile.open("gva_res.csv"); + freqcsv.open("gva_freqs.csv"); + int i; + for (i = 0; i < size; i ++){ + freqs[res[i]] ++; + myfile << res[i]; + myfile << "\n"; + } + for (i=0; i < 10; i++){ + freqcsv << "0."; + freqcsv << i; + freqcsv << ", "; + freqcsv << freqs[i]; + freqcsv << "\n"; + } + myfile.close(); + freqcsv.close(); +} + +int main(int argc, char **argv) { + if(argc <2) + return -1; + long unif[atoi(argv[1])]; + // create the outputs + for (int i = 0; i < atoi(argv[1]); i++) + unif[i] = uniform(); + + // store hist freqs + int freqs[10]; + for(int i=0; i < 10; i ++) + freqs[i] = 0; + store_res(unif, freqs, atoi(argv[1])); + for (int i = 0; i < atoi(argv[1]); i++) + cout << unif[i] << endl; +} diff --git a/gva_freqs_1000.odc b/gva_freqs_1000.odc new file mode 100644 index 0000000000000000000000000000000000000000..c22348860e3431d963b315029d747805fac824e9 Binary files /dev/null and b/gva_freqs_1000.odc differ diff --git a/gva_freqs_100000.odc b/gva_freqs_100000.odc new file mode 100644 index 0000000000000000000000000000000000000000..9afb9a637b633867fd069b3732ac592286521317 Binary files /dev/null and b/gva_freqs_100000.odc differ