模拟布朗运动

描述

  花粉等悬浮在流体中的微粒都会做一个无规则的运动,这就是布朗运动。我们可以使用随机数来模拟这种运动。微粒的开始坐标为(0,0),随后随机选择运动方向和运动距离。假设当前坐标为(Xold,Yold),Xold在[-1,1]列表中随机选择出运动的方向Dx、在[1,2,3,4,5,6,7,8,9,10]列表中随机选择出水平移动的距离Hx,则Xnew=Xold+Dx*Hx。Yold坐标也一样,独立于Xold选择运动方向Dy和运动距离Vy,则有Ynew=Yold+Dy*Vy。这样微粒就会移动到新坐标(Xnew,Ynew)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

题目要求:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入一个整数sd作为随机数的种子
  2. 模拟微粒五次无规则运动,将坐标依次存入列表,并打印列表(形如:[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)])
  3. 计算微粒5次布朗运动所形成的坐标的欧式距离之和(二维坐标(x1,y1)与(x2,y2)的欧式距离为sqrt((x1-x2)**2 +(y1-y2)**2))。结果保留两位小数输出。

输入格式

 输入为一个整数,例如(-5)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输出格式

 输出为两行,第一行是微粒五次运动后的坐标值形成的列表,形如:[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)];第二行是五次运动的欧式距离之和(保留两位小数)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输入输出示例

输入输出
示例 12[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)]
55.78
示例2-5

[(0, 0), (-6, 6), (-5, 7), (-13, 15), (-3, 25), (4, 18)]‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

45.25‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

import random
import math
random.seed(int(input()))
tup1 = (0,0)
arr = list()
arr.append(tup1)
for i in range(5):
    Xold = arr[i][0]
    Dx = random.choice([1,-1])
    Hx = random.choice([1,2,3,4,5,6,7,8,9,10])
    Xnew = Xold + Dx * Hx
    Yold = arr[i][1]
    Dy = random.choice([1,-1])
    Vy = random.choice([1,2,3,4,5,6,7,8,9,10])
    Ynew = Yold + Dy * Vy
    tup1  = (Xnew,Ynew)
    arr.append(tup1)
print(arr)
sum = 0
for i in range(5):
    temp = math.sqrt((arr[i][0] - arr[i+1][0])**2 + (arr[i][1] -arr[i+1][1])**2)
    sum = sum + temp
print(round(sum,2))

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值