tools.cpp
TRANSCRIPT
![Page 1: Tools.cpp](https://reader035.vdocuments.site/reader035/viewer/2022071813/55a4e1501a28aba70e8b47d5/html5/thumbnails/1.jpg)
tools.cpp
#include "tools.hpp"
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
void ProgressBar(int it, int num_iterations) { std::cout << "\r" << (double)it * 100 / num_iterations + 1 << "%" <<
std::flush;
}
std::string IntToString(int i) { if (i < 0) { i = i*(-1); } int lenght = int(log(i+1)/log(10)+1);
char buffer[lenght];
sprintf(buffer, "%d", i);
return buffer;
}
bool BernoulliDistr(double P) { double rnd = drand48();
if (rnd < P) return true; else return false;
}
int Distance(int x1, int y1, int x2, int y2, int grid_size) { int dx = fabs(x1 - x2); if (dx > grid_size/2) dx = grid_size - dx;
int dy = fabs(y1 - y2); if (dy > grid_size/2) dy = grid_size - dy;
return dx + dy;
}
double NormalDistr(double my, double sigma) { double u = drand48(); double v = drand48();
double snormal = cos(2*3.141592654*u)*sqrt(-2*log(v));
return sigma*snormal+my;
}
double LogNormal(double ev, double var) { double sigma = sqrt(log(var/(ev*ev) + 1)); double my = log(ev) - sigma*sigma / 2;
Seite 1
![Page 2: Tools.cpp](https://reader035.vdocuments.site/reader035/viewer/2022071813/55a4e1501a28aba70e8b47d5/html5/thumbnails/2.jpg)
tools.cpp
return exp(NormalDistr(my, sigma));
}
Seite 2