【发布时间】:2012-02-21 07:34:52
【问题描述】:
我正在尝试生成一个环内的随机数,即我们有一个最大和最小半径。我试着做:
while True:
x=random.uniform(-maxR, maxR)
y=random.uniform(-maxR, maxR)
R=math.sqrt(x**2 + y**2)
if R <= maxRadius and R >= minRadius:
if x>= -maxRadius and x <= maxRadius and x<=-minRadius and x>= minRadius:
print "passed x"
if y>= -maxRadius and y <= maxRadius and y<=-minRadius and y>= minRadius:
break
但这很慢。是否可以向random.uniform 提供更多约束,或者有其他方法吗?
【问题讨论】:
-
最后两个 if 语句是干什么用的?为什么仅仅检查
R(半径)是否在范围内是不够的? -
您可以总是预先生成数字并将它们存储在字典映射中。
-
关于从非 unifrom PDF 尤其是圆圈中绘图的问题已经无穷无尽。这些问题的更好答案包含从任意可反转 PDF 中绘制的方法。