Python:绘制除一些间隔之外的随机浮点数

时间:2017-03-20 22:08:56

标签: python python-2.7 random

我想在0.2*np.pi之间绘制10个不在(np.radians(101),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

但这是超级慢,因为被排除的区域是如此之大。有没有更省时的方法?

谢谢!

2 个答案:

答案 0 :(得分:4)

预先计算排除范围size = np.radians(298) - np.radians(101)的大小。在y0.之间生成值2*np.pi - size。如果y大于np.radians(101),请向其添加size

答案 1 :(得分:4)

当我们处理圆圈时,这与仅在[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