第4章-1 一次模拟多个随机漫步

# -*- coding: utf-8 -*-
"""
Created on Tue Jan 03 19:56:20 2017

@author: night
"""

import numpy as np
nwalks = 5000
nsteps = 1000
draws = np.random.randint(0,2,size=(nwalks,nsteps)) #size既为5000行1000列,也就是5000次1000步的随机漫步
print draws     #draws代表了一个5000行的列表,每个列表有1000个元素,这1000个元素是有0和1随机构成
steps = np.where(draws>0,1,-1)      #当元素为1时,step为1,当元素为0时,step为-1
walks = steps.cumsum(1) #所有元素的累积和, 行axis=1,列axis=0
print walks    #walks为5000行的列表,列表中的有1000个元素,每个元素是前面所有元素的累积和
print walks.max()
print walks.min()
hits30 = (np.abs(walks)>=30).any(1) #any(1),对每一行按指定条件进行判断,条件为>=30,当每一行中只要存在1个>=30的数,即返回True,否则当所有值都小于30时,返回False
print hits30    #可以看出是一个布尔型列表
print hits30.sum()  #True相当于1,即对1的数量求和
print walks[hits30]     
print np.abs(walks[hits30])
crossing_times = (np.abs(walks[hits30])>=30).argmax(1)  #hits30列表中True对应在walks中的列表选出来,然后对其中的元素取绝对值。再对前面的语句用argmax(1),即提取每行中首次出现绝对值>=30的元素索引值。
print crossing_times    #返回一个列表,列表中的每一个元素由每行中首次出现绝对值>=30的索引值构成
print crossing_times.mean()


### 回答1: 这是一个简单的Python随机漫步程序: import random position = 0 walk = [position] steps = 1000 for i in range(steps): step = 1 if random.randint(0, 1) else -1 position += step walk.append(position) print(walk) ### 回答2: 下面是一个使用Python编写的随机漫步程序: ```python import random def random_walk(n): x, y = 0, 0 for i in range(n): dx, dy = random.choice([(0,1), (0,-1), (1,0), (-1,0)]) x += dx y += dy return (x, y) num_steps = 100 # 漫步的步数 final_position = random_walk(num_steps) # 调用函数进行漫步 print(f"漫步的最终位置: {final_position}") ``` 这个程序模拟了一个二维平面的随机漫步。在每一步中,随机选择一个方向(上、下、左、右)进行移动,模拟随机漫步的轨迹。最终位置是根据指定的步数计算得出的。 ### 回答3: 以下是一个简单的Python随机漫步程序,用于模拟随机游走: ```python import random def random_walk(n): x, y = 0, 0 # 初始位置在原点 moves = [(0, 1), (0, -1), (1, 0), (-1, 0)] # 可能的移动方向 for _ in range(n): dx, dy = random.choice(moves) # 随机选择一个移动方向 x += dx y += dy return x, y n = 100 # 设定漫步的步数 x, y = random_walk(n) print("最终位置:({}, {})".format(x, y)) ``` 该程序模拟了在平面上进行随机漫步,初始位置为原点(0, 0),每一步都随机选择向上、向下、向左或向右移动一步。通过循环重复进行n步漫步后,最终打印出漫步结束时的位置坐标。 请注意,这只是一个简单的示例程序,随机漫步是一个更广泛的概念,在现实生活中可以应用于很多领域,例如金融、物理学和生物学等。这个简单的程序只是模拟了基本的随机漫步行为。具体的应用需要根据实际需求进行更复杂的编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值