我正在寻找一种方法来找到一个圆内的随机坐标数与该圆外但在一个正方形内的随机坐标数之比。
我已经生成了随机坐标-位于圆内的坐标返回为“ 2”,位于圆外的坐标返回为“ 1”。我想将它们用作列表中的项,以便可以找到比率“ 2”:“ 1”。
import random
import math
from collections import Counter
for x_y in range(int(input("Number of points: "))):
x, y = [(random.randint(0,1001)/1000),
(random.randint(0,1001)/1000)]
x = (random.randint(0,1001)/1000)
y = (random.randint(0,1001)/1000)
def circle(x,y):
# points outside the circle
if y**2 + x**2 > 1:
return str(1)
# points inside the circle
else:
return str(2)
print(circle(x,y))
问题在于,每个结果将在单独的行中打印出来-如果使用计数器,我猜每一行都将被视为其自己的列表,并且我无法进行任何形式的整体频率操作。我也不确定是否可以从使用整数中受益。我对Python还是很陌生,所以如果我没有一个简单的答案,我深表歉意。
答案 0 :(得分:3)
import random
import math
from collections import Counter
def circle(x,y):
# points outside the circle
if y**2 + x**2 > 1:
#return str(1)
return 1
# points inside the circle
else:
#return str(2)
return 2
list1 = []
for x_y in range(int(input("Number of points: "))):
x, y = [(random.randint(0,1001)/1000), (random.randint(0,1001)/1000)]
x = (random.randint(0,1001)/1000)
y = (random.randint(0,1001)/1000)
list1.append(circle(x,y))
print(circle(x,y))
一些评论:
使用您编写的代码,circle
函数在循环的每次迭代中都会重新定义。最好在循环前定义它,这样它几乎不会被定义一次。
循环中的circle
函数返回一个字符串;我认为,如果返回整数,会更容易。如果需要打印整数,则可以将其转换为字符串。
要保存到列表,只需在循环之前创建一个空列表,然后在每个循环的末尾附加函数的结果。
然后,您可以根据需要使用列表。希望对您有所帮助。