在球面上随机生成点的方法看起来不是随机的

2024-05-12 15:14:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在球面上画出随机分布的点

根据无数sources(方法10),以下应生成均匀随机分布的点:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
N = 2000
r = 3
u = np.random.rand(N)
v = np.random.rand(N)
theta = 2*np.pi*u
phi = np.arccos(2*v-1)
x = r*np.cos(phi)*np.sin(theta)
y = r*np.sin(phi)*np.sin(theta)
z = r*np.cos(theta)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)

当我绘制它时,它看起来并不一致。有些角度如下所示:

this

而其他人则是这样:

this

即使我在网站上运行代码,它看起来也是错误的和不统一的


Tags: 方法importasnpfigpltrandomsin