题目概述
在一个二维平面上,有一个酒鬼,它最初的位置视为原点,向前走为正数,向后走为负数,一共走了2000步,一步为0.5米
求:
- 酒鬼与原点的距离
- 酒鬼在走的过程中,与原点的最远距离
因为酒鬼走的方向是随机的,所以我们使用random的随即模块来生成2000个“掷硬币值”,就可以得出答案了
代码实现
import numpy as np
step = 2000
draws = np.random.randint(0,2,size=step)
direction_steps=np.where(draws>0,1,-1)
distance=direction_steps.cumsum()
print(distance)
print(distance.max())#酒鬼向前最远走到哪
print(distance.min())#酒鬼向后最远走到哪
print(direction_steps.sum()*0.5)#酒鬼走完两千步的位置
代码内容解释
- 在第三行中使用了randint函数创建数组,random.randint(a, b, n)表示随机生成n个大于等于a,小于b的整数,所以这里就是生成了step个大于等于0,小于2的整数,也就是说这个数组里的元素只有0和1。
- 在第四行,我们使用where进行判断,当draws数组中的元素大于0时,那么direction_steps就为1,否者就为-1,这样我们就得到了一个新的数组
- 在第五行这里我们将上面的得到的新数组进行累计和运算,就能得出酒鬼向前走最远走到哪,向后走最远走到哪,还能得出走完2000步后,酒鬼的位置