# Exercise 1
from numpy.random import random_sample
from numpy import sqrt, sum, pi

#In 3 Zeilen zwecks Uebersicht
x,y = random_sample(1e6), random_sample(1e6)
r = sqrt(x**2+y**2)
pi_calc = float(r[r<1].shape[0])/r.shape[0]*4.
print "Pi was estimated to %s (Reference: %s)"%(pi_calc,pi)

#In einer Zeile
def pi_calc(N=1e6): return float(sum(sqrt(random_sample(N)**2+random_sample(N)**2)<1))/N*4.
print pi_calc()

#Exercise 2
from numpy import loadtxt, histogram, linspace
from Gnuplot import Data, Gnuplot
data=loadtxt('data3.dat',unpack=True)

gp=Gnuplot()
for index,d in enumerate(data):
	binned_a_data,bins_a=histogram(d)
	gpdata_a=Data(bins_a[:-1],binned_a_data,with_="histeps",title="Datensatz %s"%(index))
	gp.replot(gpdata_a)

#Exercise 3
from numpy import arange, sum
def poly_N(xs,xe,pN,N=3):
	from numpy import meshgrid
	xvals=linspace(xs,xe,pN)
	y,x=meshgrid(xvals,arange(N))
	yvals=sum(y**x,axis=0)
	return xvals,yvals

x,y=poly_N(1,10,100)
gpdata=Data(x,y,with_="lines")
gp.plot(gpdata)
raw_input()

