from math import * from random import * from visual.graph import * N=100000 MEASURE=1 pic=gdisplay(x=600,y=0,width=400,height=200,xmin=-2.0,xmax=2.0,ymin=0.0, foreground=color.black, background=color.white) p=ghistogram(gdisplay=pic,bins=arange(-2.0,2.0,0.1), accumulate=1,color=color.blue) dist=[] delta=0.5 b=1000.0 alpha=1.0 mean=0.0 meansq=0.0 ## loop over measurements mc=0 x=random() for i in range(0,N): xtrial=x+delta*(random()-0.5) if ((xtrial>b) or (xtrial<-b)): continue w=exp(-alpha*(xtrial*xtrial-x*x)) if (random()<=w): x=xtrial mc+=x*x dist.append(x) mc/=N p.plot(dist) # accumulate the mean and its square mean/=MEASURE meansq/=MEASURE ## print out mean and its error