- 主题:求教:在球面上如何随机取一点
取三个-1~1的均匀随机数做xyz轴,如果到原点的直径大于1,扔掉重新生成,小于1的话半径rescale到1
或者按照正太分布生成三个随机数作为xyz轴,半径rescale到1
【 在 abigtree 的大作中提到: 】
: 如果按照球坐标系的θ,φ可以做到随机吗?
: 我计算球冠面积, 感觉不太对.
: 还有别的方法吗? 求教了.
--
FROM 111.199.187.*
你的“随机”是指球面上各点取到的概率相等吧?可以的,但θ的取法要注意,不能直接用均匀分布的随机数,否则南北极取到的概率就会大于赤道。
φ,找一个[-pi, pi] 上均匀分布的随机数就可以了。
θ,先找一个[-1,1] 上均匀分布的连续随机数x,一个p=0.5的01分布y,
然后再 θ=2(y-0.5)arccos(x)
【 在 abigtree 的大作中提到: 】
: 如果按照球坐标系的θ,φ可以做到随机吗?
: 我计算球冠面积, 感觉不太对.
: 还有别的方法吗? 求教了.
--
FROM 120.229.69.*
【 在 laofu 的大作中提到: 】
: 你的“随机”是指球面上各点取到的概率相等吧?可以的,但θ的取法要注意,不能直接用均匀分布的随机数,否则南北极取到的概率就会大于赤道。
: φ,找一个[-pi, pi] 上均匀分布的随机数就可以了。
: θ,先找一个[-1,1] 上均匀分布的连续随机数x,一个p=0.5的01分布y,
: ...................
是的, 一开始就是这个问题, 我估算了一下, 不行.
--
FROM 222.190.121.*
这么取出来的θ的密度函数是sinθ,可能差个系数。那么在(θ,Φ)到(θ+dθ,Φ+dΦ)这个区域的总概率是∫sinθdθdΦ,正比于这个区域对应的球面面积。
所以我觉得应该行。当然系数可能要调一下。
【 在 abigtree 的大作中提到: 】
:
: 是的, 一开始就是这个问题, 我估算了一下, 不行.
--
FROM 223.104.64.*
对于球面的话,你取柱坐标是均匀的,也就是说两个变量z从-R去到R,φ从0到2π,取随机,得到的就是球面上的随机分布。
【 在 abigtree 的大作中提到: 】
: 是的, 一开始就是这个问题, 我估算了一下, 不行.
--
FROM 180.110.134.*
如果想要按照球面均匀分布,就要先做一个函数,把4*pi*R^2的球表面积和一个
同等面积的长方形一一对应起来,然后在这个长方形上取随机函数,然后再映射会球表面。
【 在 abigtree 的大作中提到: 】
: 如果按照球坐标系的θ,φ可以做到随机吗?
: 我计算球冠面积, 感觉不太对.
: 还有别的方法吗? 求教了.
: ...................
--
FROM 218.88.28.*
需要 随机数来自正态分布才行。
【 在 laurent 的大作中提到: 】
: 你产生三个随机数当坐标,然后归一化,把长度变成1不就好了。
:
--
FROM 183.95.135.*