use*_*005 3 python uniform-distribution
我要取样的二维矢量X从均匀分布与∥ X ∥≤1.我知道可以从均匀分布作为采样
numpy.random.uniform(0.0, 1.0, 2)
Run Code Online (Sandbox Code Playgroud)
但我怎么能确保∥ X ∥≤1?
它可以通过随机化角度和长度并将它们转换为笛卡尔坐标来完成:
import numpy as np
length = np.sqrt(np.random.uniform(0, 1))
angle = np.pi * np.random.uniform(0, 2)
x = length * np.cos(angle)
y = length * np.sin(angle)
Run Code Online (Sandbox Code Playgroud)
编辑:iguarna对原始答案的评论是正确的.为了均匀地绘制点,length需要是绘制的随机数的平方根.可以在此处找到对它的引用:模拟光盘上的均匀分布.举例来说,这是没有平方根的随机结果的结果:
并使用平方根:
