Python 在环面上生成随机点位置

Python 在环面上生成随机点位置,python,random,plot,Python,Random,Plot,我正在编写一个代码来模拟粒子在环面上的传播。最初,粒子聚集在“局部”空间,如下图所示: 蓝点是初始粒子。问题是,当我放大时,粒子似乎不会随机扩散: 首先,我看到他们像罗尔斯一样。此外,我使用的是N=5个粒子,但这里似乎有25个粒子(5个粒子中的5个)。我想它来自meshgrid(),因为25=5^2,但老实说,我不太明白这个函数是如何工作的 这是我的密码: 创建红色圆环体: angle = np.linspace(0, 2*np.pi, 32) theta, phi = np.meshgri

我正在编写一个代码来模拟粒子在环面上的传播。最初,粒子聚集在“局部”空间,如下图所示:

蓝点是初始粒子。问题是,当我放大时,粒子似乎不会随机扩散:

首先,我看到他们像罗尔斯一样。此外,我使用的是N=5个粒子,但这里似乎有25个粒子(5个粒子中的5个)。我想它来自meshgrid(),因为25=5^2,但老实说,我不太明白这个函数是如何工作的

这是我的密码:

创建红色圆环体:

angle = np.linspace(0, 2*np.pi, 32)
theta, phi = np.meshgrid(angle, angle)
X = (R + r * np.cos(phi)) * np.cos(theta)
Y = (R + r * np.cos(phi)) * np.sin(theta)  
Z = r * np.sin(phi)
放置初始点:

thetaInit = ((np.random.rand(N)-0.5)*np.pi/16)
phiInit = ((np.random.rand(N)-0.5)*np.pi/32)
theta2, phi2 = np.meshgrid(phiInit, thetaInit)
Xinit = (R + r * np.cos(phi2)) * np.cos(theta2)
Yinit = (R + r * np.cos(phi2)) * np.sin(theta2) 
Zinit = r *  np.sin(phi2)

其中N是粒子数,r,r分别是圆环体的小半径和大半径。

不需要线
theta2,phi2=np.meshgrid(phiInit,thetaInit)
。只需在最后三个语句中使用tainit和phiInit。@DYZ Awe,非常感谢!我想这一次我有点傻。一旦你告诉我,似乎很有逻辑。。。