您的位置:首页 > 编程语言 > Python开发

python小练习1:随机漫步

2017-04-15 00:00 429 查看
假设某人位于N*N的区域中心,每次随机选择一个上下左右方向,他从中心处走出该区域所用的步数为一次模拟,求多次模拟的平均数

#coding=utf-8
import random

#N = int(raw_input(u"请输入矩阵大小:"))
#K = int(raw_input(u"请输入模拟次数:"))

directions = {"W":"<","E":">","N":"∧","S":"v"}
#生成初始矩阵函数
def get_matrix(n):
matrix = []
for i in range(n):
matrix.append(["." for i in range(n)])
return matrix

#打印矩阵函数
def print_matrix(matrix):
for item in matrix:
print " ".join(item)

#位置移动函数,坐标加减并返回
def move(x,y,direction):
if direction == "W":
y -= 1
if direction == "E":
y += 1
if direction == "N":
x -= 1
if direction == "S":
x += 1
return x,y

#单次模拟函数
def single_simulate(N):

x, y = N/2,N/2
step = 0
matrix = get_matrix(N)
matrix[x][y] = "o"
print_matrix(matrix)
print "steps %d; Y=%d,X=%d,N=%d; Status:IN" % (step,y,x,N)
while 0 <= x <= N-1 and 0 <= y <=N-1:
matrix[x][y] = "o"
direction = random.choice(["W", "E", "N", "S"])
x,y = move(x,y,direction)
step += 1
if 	0 <= x <= N-1 and 0 <= y <=N-1:
matrix[x][y] = directions.get(direction)
print_matrix(matrix)
print "steps %d; Y=%d,X=%d,N=%d; Status:IN" % (step,y,x,N)
else:
print_matrix(matrix)
print "steps %d; Y=%d,X=%d,N=%d; Status:OUT" % (step,y,x,N)
return step

def simulate(N,K):
count = []
for i in range(K):
print "N=%d 时,开始第 %d 次模拟" % (N,i)
step = single_simulate(N)
count.append(step)
print u"N=%d 时,第 %d 次模拟结束,共 %d 步走出" % (N,i+1,step)
print u"N=%d 时,平均 %d 步走出" % (N,sum(count)/len(count))
simulate(11,2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: