#include <iostream>
#include <iomanip>
#include <fstream>
#include <math.h>
using namespace std;

int main()
{
	char puffer[255] = "";
	bool gnuplot = true;
	
	// Soll das Ergebnis im Gnuplot angezeigt werden?
	cout << "Soll das Ergebnis im Gnuplot angezeigt werden? (j/n) [j]: ";
	cin.getline(puffer,sizeof(puffer),'\n');
	if((string)puffer == "n")
	{
		gnuplot = false;
	}
	
	//Zufallsgenerator initialisieren
	int haeufig[20];
	ofstream ausgabe;
	ausgabe.open("a19-res.dat");
	srand((unsigned int)time(0));
	float v1=0, v2=0, s=0, x1=0, x2=0;
	for(int i=0;i <20;i++) haeufig[i] = 0;
	for(int i=0; i< 5000;i++)
	{
		do
		{
			v1 = 2.0*rand()/(double)RAND_MAX - 1;
			v2 = 2.0*rand()/(double)RAND_MAX - 1;
			s= pow(v1,2) + pow(v2,2);
		}
		while(s >= 1);
		x1 = v1 * sqrt((-2 * log(s))/s);
		if(x1 > -10 && x1 < 10) haeufig[(int)floor(x1)+10]++;
		x2 = v2 * sqrt((-2 * log(s))/s);
		if(x2 > -10 && x2 < 10) haeufig[(int)floor(x2)+10]++;
	}
	for(int i = -10; i < 10;i++)
	{
		ausgabe << i << " " << haeufig[i+10] << endl;
	}
	ausgabe.close();
	if(gnuplot)system("gnuplot -persist a19-gnuplot.gp");
	return(0);
}
