我想在 0. 和 2*np.pi 之间绘制 10 个不在 (np.radians(101) 范围内的 float ),np.radians(298))。蛮力法是
rand_ra=[]
while len(rand_ra) <= 10:
x=np.random.uniform(0.,2*np.pi,100) #pick 100 or whatever number you want
for y in x :
if 0. <= y <= np.radians(101) and np.radians(298)<=y<= 2.*np.pi :
rand_ra.append(y)
print rand_ra
但这非常慢,因为排除的区域太大了。有没有更省时的方法?
谢谢!
请您参考如下方法:
因为我们处理的是一个圆,这与绘图编号在 [np.radians(298) - 2 * pi, np.radians(101)] 范围内相同.
即:
sample = np.random.uniform(np.radians(298) - 2 * np.pi, np.radians(101), 100)
然后,将那些小于0的简单归一化
sample[sample < 0] += 2 * np.pi
