使用最简单的逐点翻转法逐点模拟
import time
import numpy as np
from numpy.random import rand
import matplotlib.pyplot as plt
def init_state(N):
''' generates a random spin configuration for initial condition'''
# np.random.randint(2, size=(N,N)) 表示产生N*N随机数,返回为列表
state = 2*np.random.randint(2, size=(N,N))-1
return state
def flipping(grid, beta):
'''Monte Carlo move using Metropolis algorithm '''
N = len(grid)
for i in range(N):
for j in range(N):
# 产生0到N-1的随机数
a = np.random.randint(0, N)
b = np.random.randint(0, N)
s = grid[a][b]
E = grid[(a+1)%N][b] + grid[a][(b+1)%N] + grid[(a-1)%N][b] + grid[a][(