問題

私は4次元球上の点の均一な分布が必要です。私はこれが3つの角度を選んで極座標を使うほど簡単ではないことを知っています。

私が使用する3次元

 from random import random

u=random()
costheta = 2*u -1 #for distribution between -1 and 1
theta = acos(costheta)
phi = 2*pi*random

x=costheta
y=sin(theta)*cos(phi)
x=sin(theta)*sin(phi)
 

これにより、x、y、zの均一な分布が得られます。

4次元で同様の分布を取得するにはどうすればよいですか?

  ベストアンサー

標準的な方法、おそらく最速のではないは、Mullerのメソッドを使用して、Nsphere上の一様分布点を生成します。

 import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d

N = 600
dim = 3

norm = np.random.normal
normal_deviates = norm(size=(dim, N))

radius = np.sqrt((normal_deviates**2).sum(axis=0))
points = normal_deviates/radius

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ax.scatter(*points)
ax.set_aspect('equal')
plt.show()
 

enter image description here

dim = 3dim = 4に変更して、4球上の点を生成するだけです。

  同じタグがついた質問を見る

pythondistributiontrigonometrymontecarlopolar-coordinates