首页 > 解决方案 > 如何从列表中随机选择一个元素,然后使用一个简单的公式来更改这个值(并在 for 循环中进行)?

问题描述

我正在做一个在盒子(二维)内生成粒子的任务。现在,这些粒子应该在盒子内移动,因此可以计算能量的变化。该算法应该一次只改变一个粒子的位置,然后计算速度。这样就可以计算动能。也许只包含算法的描述(蒙特卡洛)更容易:

在此处输入图像描述

我的问题或疑问是我想选择列表中的一个元素,根据以下内容更改该元素/位置:

搬家方法
在此处输入图像描述

如果我能做到这一点,那么可以通过将位置差除以时间来找到速度。所以我想要一个for循环随机遍历所有位置并计算能量。现在我只能计算同一个粒子的速度。这是我的代码:

import random
import numpy as np
import matplotlib.pyplot as plt

r_1=random.uniform(0,1)
r_2=random.uniform(0,1)

N=20
LX=10
LY=10
a=1
b=0.5
dt=0.01
x=np.zeros(N)
y=np.zeros(N)
vx=np.zeros(N)
vy=np.zeros(N)


for i in range(N):
    x[i]=random.uniform(0,LX)
    y[i]=random.uniform(0,LY)

l=random.choice(range(len(x)))

for l in range(N):
    l=random.choice(range(len(x)))
    x_initial=x[l]
    #k=random.choice(range(len(y)))
    x[l]=x[l]+(r_1-0.5)*b
    x_final=x[l]
    vx[l]=(x_final-x_initial)/dt
    
print(vx)

标签: pythonphysics

解决方案


推荐阅读