#ejemplo para hacer una cadena de markov que represente una distribucion de probabilidades #con una sola variable import numpy as np #pasos de mi cadena de Markov npasos = 150000 aceptados = 0 #los distintos samplings, que primero los pongo en cero. x = np.zeros(npasos); x[0] = 0.5 #primer paso de mi cadena de Markov. #propongo un cambio for i in range(npasos-1): x_nuevo = 10*(np.random.rand()-0.5); a = min(1,np.exp(-x_nuevo**2/2)/np.exp(-x[i]**2/2)); #notar que nunca haria un cociente asi de exps, sino poner el argumento if np.random.rand() < a: # acepto con probalidad a x[i+1] = x_nuevo aceptados = aceptados + 1 else: x[i+1] = x[i] print("mean: ", np.mean(x), " std: ", np.std(x))