import
random; import sobol_lib;
import sys
if
sys.version_info >= (3,):
xrange = range
def
calc_PI_sobol(n_points):
hits = 0
sout = random.randint(1,10000)
for i in range(1, n_points):
# x, y = random.uniform(0.0, 1.0),
random.uniform(0.0, 1.0)
p, sout = sobol_lib.i4_sobol ( 2, sout
)
if (p[0]**2 + p[1]**2) <= 1.0:
hits += 1
return 4.0 * float(hits) / n_points
def calc_PI_uniform(n_points):
hits = 0
for i in range(1, n_points):
x,y = random.uniform(0.0, 1.0),
random.uniform(0.0, 1.0)
if (x**2 + y**2) <= 1.0:
hits += 1
return 4.0 * float(hits) / n_points
def print_XY_Uniform(n_points):
for i in range(1, n_points):
print("{0:4f} {1:4f}".format(random.uniform(0.0,
1.0), random.uniform(0.0, 1.0)))
def print_XY_Sobol (n_points):
sout = random.randint(1,10000)
for i in range(1, n_points):
# x, y = random.uniform(0.0, 1.0),
random.uniform(0.0, 1.0)
p, sout = sobol_lib.i4_sobol ( 2, sout
)
print("{0:4f} {1:4f}".format(p[0],p[1]))
if len(sys.argv)<2: o:p="">2:>
print("Uso de
la herramienta ")
else:
if (sys.argv[1]=="1"):
print_XY_Uniform(1000)
elif(sys.argv[1]=="2"):
print_XY_Sobol (1000)
elif(sys.argv[1]=="3"):
for i in range(0,50):
n = 1000 + i*2000
print ("{0:1d} {1:5f}
{2:5f}".format(n,calc_PI_uniform(n),calc_PI_sobol(n)))
elif(sys.argv[1]=="4"):
for i in range(3,7):
n = 10**i
print
("{0:1d} {1:5f}
{2:5f}".format(n,calc_PI_uniform(n),calc_PI_sobol(n)))